1
2

More than 1 year has passed since last update.

Android + FirebaseAuth で Twitter OAuth認可時の accessToken, secret の取得方法(Kotlin)

Last updated at Posted at 2021-11-03

概要

Android アプリで FirebaseAuth を使って Twitter OAuth の認可を受けた後、サーバに accessToken と secret を送り、サーバ側で Twitter API を用いて認可されている情報の参照などを行います。

クライアント(Android アプリ)側の実装については、基本的に公式ドキュメント(以下)に記述されている通りの方法でできますが、accessToken と secret の取得方法 で少し迷ったので、備忘録を兼ねてその解決方法を記します。

accessToken, secret の取得方法

Androidアプリが Firebase SDK の Twitter OAuth で認可を受けると、OnSuccessListener::onSuccess がコールバックされ、その引数(AuthResult)から accessToken と secret を取得できます。

以下、公式ドキュメントよりその部分のコード(Java)を抜粋します。

firebaseAuth
    .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
    .addOnSuccessListener(
        new OnSuccessListener<AuthResult>() {
          @Override
          public void onSuccess(AuthResult authResult) {
            // User is signed in.
            // IdP data available in
            // authResult.getAdditionalUserInfo().getProfile().
            // The OAuth access token can also be retrieved:
            // authResult.getCredential().getAccessToken().
            // The OAuth secret can be retrieved by calling:
            // authResult.getCredential().getSecret().
        })

ただし、上述のコメントで記載されている内容通り getAccessToken()getSecret() を実行することができません。

解決方法

authResult.credentialAuthCredential型)を OAuthCredential型 にキャストすれば大丈夫です。

以下、公式のサンプルコードをKotlinに修正しつつ accessToken と secret を取得するサンプル(抜粋)を示します。

firebaseAuth // ← ついでにこれも公式ドキュメントで説明漏れているけど FirebaseAuth.getInstance() です
    .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
    .addOnSuccessListener {
        val credential = it.credential as? OAuthCredential
        val accessToken = credential?.accessToken
        val secret = credential?.secret
        TODO("Send `accessToken` and `secret` to your server.")
    }
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2