twitter_oauth2_pkce 0.5.0 copy "twitter_oauth2_pkce: ^0.5.0" to clipboard
twitter_oauth2_pkce: ^0.5.0 copied to clipboard

Provides the optimized and easiest way to authenticate with the Twitter API using the OAuth 2.0 PKCE in Flutter.

twitter_oauth2_pkce

The Optimized and Easiest Way to Authenticate with OAuth 2.0 PKCE for Twitter API 🐦


GitHub Sponsor GitHub Sponsor

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


1. Guide 🌎 #

This library provides the easiest way to authenticate with OAuth 2.0 PKCE for Twitter API in Dart and Flutter apps.

Show some ❤️ and star the repo to support the project.

We recommend using this library in combination with the twitter_api_v2 which wraps the Twitter API v2.0!

1.1. Getting Started ⚡ #

1.1.1. Install Library #

With Dart:

 dart pub add twitter_oauth2_pkce

Or With Flutter:

 flutter pub add twitter_oauth2_pkce

1.1.2. Import #

import 'package:twitter_oauth2_pkce/twitter_oauth2_pkce';

1.1.3. Setup #

At first to test with this library, let's set org.example.android.oauth://callback/ as a callback URI in your Twitter Developer's portal.

Set Callback URI

1.1.3.1. Android

On Android you must first set the minSdkVersion in the build.gradle file:

defaultConfig {
   ...
   minSdkVersion 18
   ...

Also it's necessary to add the following definitions to 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>

You can see details here.

1.1.3.2. iOS

On iOS you need to set the platform in the ios/Podfile file:

platform :ios, '11.0'

1.1.4. Implementation #

Now all that's left is to launch the following example Flutter app and press the button to start the approval process with OAuth 2.0 PKCE!

After pressing the Authorize button, a redirect will be performed and you will see that you have obtained your bearer token and 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 oauth2 = TwitterOAuth2Client(
                    clientId: 'YOUR_CLIENT_ID',
                    clientSecret: 'YOUR_CLIENT_SECRET',
                    redirectUri: 'org.example.android.oauth://callback/',
                    customUriScheme: 'org.example.android.oauth',
                  );

                  final response = await oauth2.executeAuthCodeFlowWithPKCE(
                    scopes: Scope.values,
                  );

                  super.setState(() {
                    _accessToken = response.accessToken;
                    _refreshToken = response.refreshToken;
                  });
                },
                child: const Text('Push!'),
              )
            ],
          ),
        ),
      );
}

1.2. Contribution 🏆 #

If you would like to contribute to twitter-oauth2-pkce, please create an issue or create a Pull Request.

There are many ways to contribute to the OSS. For example, the following subjects can be considered:

  • There are scopes that are not implemented.
  • Documentation is outdated or incomplete.
  • Have a better way or idea to achieve the functionality.
  • etc...

You can see more details from resources below:

Or you can create a discussion if you like.

Feel free to join this development, diverse opinions make software better!

1.3. Support ❤️ #

The simplest way to show us your support is by giving the project a star at GitHub and Pub.dev.

You can also support this project by becoming a sponsor on GitHub:

1.4. License 🔑 #

All resources of twitter_oauth2_pkce is provided under the BSD-3 license.

FOSSA Status

Note
License notices in the source are strictly validated based on .github/header-checker-lint.yml. Please check header-checker-lint.yml for the permitted standards.

1.5. More Information 🧐 #

twitter_oauth2_pkce was designed and implemented by Kato Shinya (@myConsciousness).

16
likes
130
pub points
79%
popularity

Publisher

verified publishershinyakato.dev

Provides the optimized and easiest way to authenticate with the Twitter API using the OAuth 2.0 PKCE in Flutter.

Repository (GitHub)
View/report issues
Contributing

Documentation

API reference

License

BSD-3-Clause (LICENSE)

Dependencies

crypto, flutter, flutter_web_auth, http

More

Packages that depend on twitter_oauth2_pkce