twitter_oauth2_pkce

使用 OAuth 2.0 PKCE 进行 Twitter API 认证的最优化且最简单的方法?


GitHub Sponsor

v2 pub package Dart SDK Version Test Analyzer codecov Issues Pull Requests Stars Code size Last Commits License Contributor Covenant


1. 指南 ?

该库提供了在 DartFlutter 应用中通过 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。

Set 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. 支持 ❤️

展示您支持此项目最简单的方式是,在 GitHubPub.dev 上 **给项目点个星**。

您也可以通过在 GitHub 上 **成为赞助者** 来支持此项目。

1.4. 许可证 ?

twitter_oauth2_pkce 的所有资源均根据 BSD-3 许可证提供。

FOSSA Status

注意 源文件中的许可证通知严格根据 .github/header-checker-lint.yml 进行验证。请查看 header-checker-lint.yml 以了解允许的标准。

1.5. 更多信息 ?

twitter_oauth2_pkceKato Shinya (@myConsciousness) 设计和实现。

GitHub

查看 Github