【Flutter】flutter_web_authを使用してQiitaにログインする
はじめに
前にflutter_web_authについて記事を書きました。今回は、flutter_web_authを使用して、Qiitaにログイン、アクセストークン取得までしてみようと思います。
ブラウザでログインするとQiitaのAPIを使用するために必要なアクセストークンが取得できます。
アプリケーション登録
Qiitaのアカウントに、作成するアプリケーションを登録します。登録することで、Client ID、Client Secret IDを取得することができます。
またログイン後のリダイレクト先URLも設定することができます。
flutter_web_authはログイン時に、ログイン画面のWebページをブラウザで開いてログインします。ログイン後、自動的にリダイレクトURLにリダイレクトすることで、アプリ側に処理が戻ってきます。(スキーマでアプリを指定して起動させます。)
ログイン画面の表示
ボタンを押すと、ログイン画面がブラウザで表示されるようにしてみます。
以下のようなボタンを画面内に用意します。
ElevatedButton(
onPressed: () async {
final String clientId = dotenv.env['CLIENT_ID']!; // クライアントIDを書く
const scope = 'read_qiita write_qiita_team';
const state = "test";
final loginURL =
'https://qiita.com/api/v2/oauth/authorize?client_id=$clientId&scope=$scope&state=$state';
// 認証
final resutl = await FlutterWebAuth.authenticate(
url: loginURL,
callbackUrlScheme: 'testapp');
print(resutl);
},
child: const Text("ログイン"))
ここより、ログイン画面へのURL(ClientID, Scope, Stateは変数)を用意して、flutter_web_authに設定します。このとき、アプリケーション登録で登録したリダイレクトURLのスキーム(httpsの場所)も設定します。
※Androidで動作確認するには、以下のような対応がAndroidManifest.xmlに必要になります。
<!-- flutter_web_authの設定 追加 -->
<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="testapp" />
</intent-filter>
</activity>
ログインボタンを押すと、ブラウザが開き、Qiitaのログイン画面が表示されます。ログインすると、指定しているスキームのアプリが開きます。
リダイレクトで帰ってきたURLにアクセストークンがついてきます。
このアクセストークンはQiitaのAPIを利用するときに使用します。
![](https://assets.st-note.com/img/1696171526244-mDVxmw8ad2.png)
![](https://assets.st-note.com/img/1696171551921-LYrBjJoqcB.png)
おわりに
今回は実際にflutter_web_authを使用して、ログインしてアクセストークンを取得するところまで行いました。ログイン、アクセストークン取得ができたので、QiitaのAPIを使用したアプリ開発もやってみようと思います。
この記事が気に入ったらサポートをしてみませんか?