メインコンテンツへスキップ

開始する前に

このクイックスタートに進む前に、以下の前提条件を満たしてください。
  1. Facebook Login SDK をセットアップする - Facebook Login SDK for Android をインストールして設定します。developers.facebook.com で Facebook アプリを作成してください。完了したら、アプリで Facebook Login が動作する状態になっている必要があります。
  2. Facebook Native 用に Auth0 を設定する - Facebook Native Sign In を使用するように Auth0 アプリケーションを設定します。詳細は、ネイティブアプリに Facebook Login を追加する を参照してください。

はじめに

1

Facebook Loginの権限を設定する

Activity 内の Facebook ログインボタンを更新して、必要な権限を正しくリクエストします。アプリはすでに Facebook Login をサポートしていますが、より充実したユーザープロファイルを取得するには、public_profileemail の権限をリクエストする必要があります。また、Auth0 の認証フローを開始するコールバックも追加します。
MainActivity.kt
email 権限は任意であり、共有にはユーザーの同意が必要です。Facebook から返されるメールアドレスは、Auth0 のユーザープロファイルで未検証として扱われます。
2

Auth0 SDKをインストールして設定する

Auth0 Android SDK をプロジェクトに追加し、アプリケーションの認証情報を設定します。app/build.gradle.kts に依存関係を追加します。
app/build.gradle.kts
依存関係を追加したら、Gradle を同期します。Auth0 の認証情報を strings.xml に追加します。Auth0 DashboardApplications に移動し、Facebook Native Sign In を有効にしたアプリケーションを選択します。ドメインクライアントID の値をコピーします。
app/src/main/res/values/strings.xml
Activity で Auth0 SDK を初期化します。
MainActivity.kt
アプリで Auth0 Web Authentication を使用しない場合は、Manifest Placeholder エラーを避けるため、AndroidManifest.xml から不要な activity を削除してください。
app/src/main/AndroidManifest.xml
Web Authentication をサポートする予定がある場合は、Universal Login による認証 を参照してください。
3

Facebook セッションアクセストークンを取得する

Facebook Login に成功したら、Facebook API からセッションアクセストークンを取得します。Auth0 では、このトークンを使用してバックエンドでユーザーの本人確認を行います。GraphRequest クラスを使用して、Facebook の /oauth/access_token エンドポイントに GET リクエストを送信します。
MainActivity.kt
必須のクエリパラメーターは次のとおりです。
  • grant_type: fb_attenuate_token
  • fb_exchange_token: Facebook Login のアクセストークン
  • client_id: Facebook アプリの App ID (Facebook SDK の設定時に、すでにアプリに含まれています)
4

Facebookユーザープロフィールを取得

Facebook からユーザーのプロフィールを取得します。Auth0 はこのデータを使用して、ユーザーの Auth0 プロフィールを作成または更新します。
MainActivity.kt
fields パラメーターは、リクエストした Facebook の権限にそのまま対応します。Auth0 が完全なユーザープロファイルを作成するには、first_namelast_nameemail をリクエストすれば十分です。
5

トークンをAuth0の認証情報に交換する

前の手順で取得したセッショントークンとユーザープロフィールを使用して Auth0 で認証し、Auth0 トークンを取得します。Facebook のサブジェクトトークンタイプを指定してセッショントークンを渡し、AuthenticationAPIClientloginWithNativeSocialToken を呼び出します。
MainActivity.kt
サブジェクトトークンタイプ http://auth0.com/oauth/token-type/facebook-info-session-access-token は、認証に Facebook のネイティブ接続を使用するよう Auth0 に指示します。
6

すべてをまとめる

performLogin メソッドを完成させて、3 つの手順すべてをつなげます: セッショントークンの取得 → ユーザープロファイルの取得 → Auth0 トークンへの交換。
MainActivity.kt
コード内にマジック文字列が散在するのを避けるため、定数 (subject token type、Facebook permissions、Auth0スコープ) はクラスの先頭にまとめて配置してください。
チェックポイントこれで、Facebook を使ったネイティブ認証ができるようになっているはずです。デバイスに Facebook アプリがインストールされている場合は、そのアプリ経由で直接認証されるため、ブラウザーは不要です。

トラブルシューティングと高度なトピック

認証エラーによりトークン交換が失敗する

解決策:
  1. Auth0 Dashboard で Auth0 アプリケーションの Facebook Native Sign In が有効になっていることを確認します
  2. strings.xml 内の Facebook App ID が Facebook Developer Console のものと一致していることを確認します
  3. subject token type の文字列が次と完全に一致していることを確認します: http://auth0.com/oauth/token-type/facebook-info-session-access-token
  4. performLogin を呼び出す前に、Facebook アクセストークンの有効期限が切れていないことを確認します

セッショントークンのリクエストでエラーが返される

修正:
  • R.string.facebook_app_idstrings.xml に正しく設定されていることを確認します
  • fb_exchange_token が Facebook の AccessToken オブジェクトから取得した生のトークン文字列であることを確認します
  • 管理者以外のユーザーでテストしている場合は、Facebook アプリが Development Mode になっていないことを確認します

AuthenticationException: “Connection not found”

修正:
  1. Auth0 Dashboard → AuthenticationSocial に移動します
  2. Sign in with Facebook が有効になっていることを確認します
  3. 接続設定で Facebook Native Social Login がオンになっていることを確認します
  4. Auth0 アプリケーションが Facebook 接続に関連付けられていることを確認します

ユーザープロフィールのフィールドが不足している

  • setPermissions の呼び出しに public_profileemail が含まれていることを確認します
  • ユーザーが email 権限を拒否した可能性があります — メールアドレスが null の場合も適切に処理してください
  • fetchUserProfilefields bundle に同じフィールドが含まれていることを確認します

セキュリティのベストプラクティス

  • 本番環境ではログ出力を無効にする: DefaultClientenableLogging = 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 のドキュメント全体を参照