開始する前に
- Facebook Login SDK をセットアップする - Facebook Login SDK for Android をインストールして設定します。developers.facebook.com で Facebook アプリを作成してください。完了したら、アプリで Facebook Login が動作する状態になっている必要があります。
- Facebook Native 用に Auth0 を設定する - Facebook Native Sign In を使用するように Auth0 アプリケーションを設定します。詳細は、ネイティブアプリに Facebook Login を追加する を参照してください。
はじめに
Facebook Loginの権限を設定する
Activity 内の Facebook ログインボタンを更新して、必要な権限を正しくリクエストします。アプリはすでに Facebook Login をサポートしていますが、より充実したユーザープロファイルを取得するには、
public_profile と email の権限をリクエストする必要があります。また、Auth0 の認証フローを開始するコールバックも追加します。MainActivity.kt
email 権限は任意であり、共有にはユーザーの同意が必要です。Facebook から返されるメールアドレスは、Auth0 のユーザープロファイルで未検証として扱われます。Auth0 SDKをインストールして設定する
Auth0 Android SDK をプロジェクトに追加し、アプリケーションの認証情報を設定します。依存関係を追加したら、Gradle を同期します。Auth0 の認証情報を Activity で Auth0 SDK を初期化します。
app/build.gradle.kts に依存関係を追加します。app/build.gradle.kts
strings.xml に追加します。Auth0 Dashboard の Applications に移動し、Facebook Native Sign In を有効にしたアプリケーションを選択します。ドメイン と クライアント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
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 の設定時に、すでにアプリに含まれています)
Facebookユーザープロフィールを取得
Facebook からユーザーのプロフィールを取得します。Auth0 はこのデータを使用して、ユーザーの Auth0 プロフィールを作成または更新します。
MainActivity.kt
トークンをAuth0の認証情報に交換する
前の手順で取得したセッショントークンとユーザープロフィールを使用して Auth0 で認証し、Auth0 トークンを取得します。Facebook のサブジェクトトークンタイプを指定してセッショントークンを渡し、
AuthenticationAPIClient で loginWithNativeSocialToken を呼び出します。MainActivity.kt
サブジェクトトークンタイプ
http://auth0.com/oauth/token-type/facebook-info-session-access-token は、認証に Facebook のネイティブ接続を使用するよう Auth0 に指示します。チェックポイントこれで、Facebook を使ったネイティブ認証ができるようになっているはずです。デバイスに Facebook アプリがインストールされている場合は、そのアプリ経由で直接認証されるため、ブラウザーは不要です。
トラブルシューティングと高度なトピック
よくある問題と解決策
よくある問題と解決策
本番環境での考慮事項
本番環境での考慮事項
セキュリティのベストプラクティス
- 本番環境ではログ出力を無効にする:
DefaultClientのenableLogging = trueを削除するか条件付きにしてください — ネットワークトラフィックが記録されます - トークンを安全に保存する:
SecureCredentialsManagerを使用して Auth0 のトークンを Android Keystore に保存します - リフレッシュトークン:
offline_accessスコープをリクエストし、セッションを維持するためにトークンのリフレッシュを実装します
Facebook アプリの設定
- リリース前に Facebook アプリを Development Mode から Live に切り替えます
- アプリの SHA-1 キーフィンガープリントを Facebook Developer Console に追加します
- Login SDK を使用するアプリに適用される Facebook の Data Policy 要件を確認します
Google Play ストア
- サードパーティ認証を使用するアプリに関する Google Play のポリシーに従います
- アプリのプライバシーポリシーに Facebook Login を含めます
次のステップ
他のIDプロバイダーを設定
Google、Apple などのソーシャルログインプロバイダーを追加
Attack Protection
ブルートフォース攻撃やボット攻撃を防止
Actions
サーバーレスコードで認証フローをカスタマイズ
Android SDK リファレンス
Auth0 Android SDK のドキュメント全体を参照