使用 OAuth 2.0 PKCE 进行 Twitter API 认证的最优化且最简单的方法?
1. 指南 ?
该库提供了在 Dart 和 Flutter 应用中通过 OAuth 2.0 PKCE 进行 Twitter API 认证的最简单方法。
请给这个项目一些 ❤️ 并给它点星支持。
我们建议将此库与 twitter_api_v2 结合使用,后者封装了 Twitter API v2.0!
1.1. 入门 ⚡
1.1.1. 安装库
使用 Dart
dart pub add twitter_oauth2_pkce
或者使用 Flutter
flutter pub add twitter_oauth2_pkce
1.1.2. 导入
import 'package:twitter_oauth2_pkce/twitter_oauth2_pkce';
1.1.3. 设置
首先,要测试此库,请在您的 Twitter Developer 门户中将 org.example.android.oauth://callback/ 设置为回调 URI。
1.1.3.1. Android
在 Android 上,您必须首先在 build.gradle 文件中设置 minSdkVersion。
defaultConfig {
...
minSdkVersion 18
...
此外,必须将以下定义添加到 AndroidManifest.xml。
<activity android:name="com.linusu.flutter_web_auth.CallbackActivity" android:exported="true">
<intent-filter android:label="flutter_web_auth">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="org.example.android.oauth" android:host="callback" />
</intent-filter>
</activity>
您可以在此处查看详细信息:here。
1.1.3.2. iOS
在 iOS 上,您需要在 ios/Podfile 文件中设置 platform。
platform :ios, '11.0'
1.1.4. 实现
现在,您所要做的就是启动以下示例 Flutter 应用,然后按按钮以使用 OAuth 2.0 PKCE 开始授权过程!
按下 Authorize 按钮后,将执行重定向,您将看到已获得 bearer token 和 refresh token。
import 'package:flutter/material.dart';
import 'package:twitter_oauth2_pkce/twitter_oauth2_pkce.dart';
void main() {
runApp(const MaterialApp(home: Example()));
}
class Example extends StatefulWidget {
const Example({Key? key}) : super(key: key);
@override
State<Example> createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
String? _accessToken;
String? _refreshToken;
@override
Widget build(BuildContext context) => Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text('Access Token: $_accessToken'),
Text('Refresh Token: $_refreshToken'),
ElevatedButton(
onPressed: () async {
final oauth = TwitterOAuth(
clientId: 'YOUR_CLIENT_ID',
clientSecret: 'YOUR_CLIENT_SECRET',
redirectUri: 'org.example.android.oauth://callback/',
customUriScheme: 'org.example.android.oauth',
);
final response = await oauth.executeAuthCodeFlowWithPKCE(
scopes: Scope.values,
);
super.setState(() {
_accessToken = response.accessToken;
_refreshToken = response.refreshToken;
});
},
child: const Text('Push!'),
)
],
),
),
);
}
1.2. 贡献 ?
如果您想为 twitter-oauth2-pkce 做贡献,请创建一个 issue 或创建一个 Pull Request。
对开源的贡献方式有很多。例如,可以考虑以下方面:
- 存在未实现的范围。
- 文档已过时或不完整。
- 有更好的方法或想法来实现该功能。
- 等等…
您可以在以下资源中查看更多详细信息:
或者,如果您愿意,可以创建一个 discussion。
随时加入此开发,多样化的意见使软件更好!
1.3. 支持 ❤️
展示您支持此项目最简单的方式是,在 GitHub 和 Pub.dev 上 **给项目点个星**。
您也可以通过在 GitHub 上 **成为赞助者** 来支持此项目。
1.4. 许可证 ?
twitter_oauth2_pkce 的所有资源均根据 BSD-3 许可证提供。
注意 源文件中的许可证通知严格根据
.github/header-checker-lint.yml进行验证。请查看 header-checker-lint.yml 以了解允许的标准。
1.5. 更多信息 ?
twitter_oauth2_pkce 由 Kato Shinya (@myConsciousness) 设计和实现。
