始める前に
- Facebook Login SDK をセットアップする - Android 向け Facebook Login SDK をインストールして設定します。developers.facebook.com で Facebook アプリを作成してください。完了時点で、アプリで Facebook Login が機能している必要があります。
- Facebook Native 用に Auth0 を設定する - Auth0 アプリケーションで Facebook Native Sign In を使用するよう設定します。詳しくは、ネイティブアプリに Facebook Login を追加する を参照してください。
はじめに
1
Facebook Loginの権限を設定する
Activity 内の Facebook Login ボタンを更新して、正しいパーミッションをリクエストします。アプリはすでに Facebook Login をサポートしていますが、充実したユーザープロファイルを取得するには、
public_profile と email のパーミッションをリクエストする必要があります。また、Auth0 の認証フローを開始するためのコールバックも追加します。MainActivity.kt
email の権限は任意です。共有するには、ユーザーの同意が必要です。Facebook から返されるメールアドレスは、Auth0のユーザープロファイルで未検証としてフラグ付けされます。2
Auth0 SDKをインストールして設定する
Auth0 Android SDK をプロジェクトに追加し、アプリケーションの資格情報を設定します。依存関係を 依存関係を追加したら、Gradle を同期してください。ActivityでAuth0 SDKを初期化します:
app/build.gradle.kts に追加します。app/build.gradle.kts
strings.xml に Auth0 の資格情報を追加します。Auth0 Dashboard の アプリケーション セクションに移動し、Facebook Native Sign In を有効にしたアプリケーションを選択します。Domain と Client ID の値をコピーしてください。app/src/main/res/values/strings.xml
MainActivity.kt
アプリでAuth0 Web Authenticationを使用しない場合は、Manifest Placeholder エラーを回避するため、Web Authentication をサポートする予定がある場合は、Universal Login を使用した認証を参照してください。
AndroidManifest.xml から未使用のActivityを削除してください。app/src/main/AndroidManifest.xml
3
Facebookセッションのアクセストークンを取得
Facebook Login が成功したら、Facebook API からセッションアクセストークンを取得します。Auth0 では、バックエンドでユーザーの本人確認を行うためにこのトークンが必要です。
GraphRequest クラスを使って、Facebook の /oauth/access_token エンドポイントに GET リクエストを送信します:MainActivity.kt
必要なクエリパラメータは次のとおりです。
grant_type:fb_attenuate_tokenfb_exchange_token: Facebook Login のアクセストークンclient_id: Facebook App ID (Facebook SDK の設定時に、すでにアプリに含まれています)
4
Facebookのユーザープロファイルを取得
Facebookからユーザーのプロファイルを取得します。Auth0はこのデータを使用して、ユーザーのAuth0プロファイルを作成または更新します。
MainActivity.kt
5
トークンをAuth0の資格情報と交換する
前の手順で取得したセッショントークンとユーザープロファイルを使用してAuth0で認証し、Auth0トークンを取得します。
AuthenticationAPIClient の loginWithNativeSocialToken を呼び出し、Facebook のサブジェクトトークンタイプを指定してセッショントークンを渡します:MainActivity.kt
サブジェクトトークンタイプ
http://auth0.com/oauth/token-type/facebook-info-session-access-token は、認証に Facebook の Native 接続を使用するよう Auth0 に伝えます。6
すべてをまとめましょう
performLogin メソッドを完成させて、3 つのステップすべてをつなげます: セッショントークンの取得 → ユーザープロファイルの取得 → Auth0 トークンへの交換。MainActivity.kt
チェックポイントこれで、Facebookでネイティブ認証を行えるはずです。デバイスにFacebookアプリがインストールされている場合、認証はブラウザーを使わず、そのアプリ内で直接行われます。
トラブルシューティングと詳細設定
本番環境での考慮事項
本番環境での考慮事項
セキュリティのベストプラクティス
- 本番環境ではログを無効にする:
DefaultClientのenableLogging = trueを削除するか条件付きで有効にしてください — ネットワークトラフィックがログに記録されます - token を安全に保存する:
SecureCredentialsManagerを使用して、Auth0 token を Android Keystore に保存します - リフレッシュトークン:
offline_accessscope を要求し、session を維持するために token の更新を実装します
Facebook アプリの設定
- リリース前に、Facebook アプリを Development Mode から Live に切り替えます
- アプリの SHA-1 キー フィンガープリントを Facebook Developer Console に追加します
- Login SDK を使用するアプリ向けの Facebook の Data Policy 要件を確認します
Google Play Store
- サードパーティ authentication を使用するアプリ向けの Google Play の policies に従います
- アプリのプライバシーポリシーに Facebook Login を含めます
次のステップ
他のIDプロバイダーを設定する
Google、Apple、その他のソーシャルログインプロバイダーを追加する
攻撃対策
ブルートフォース攻撃やボット攻撃から保護する
Actions
サーバーレスコードで認証フローをカスタマイズする
Android SDK リファレンス
Auth0 Android SDK の完全なドキュメントを参照する