Skip to main content

始める前に

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

はじめに

1

Facebook Loginの権限を設定する

Activity 内の Facebook Login ボタンを更新して、正しいパーミッションをリクエストします。アプリはすでに 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 を同期してください。strings.xml に Auth0 の資格情報を追加します。Auth0 Dashboardアプリケーション セクションに移動し、Facebook Native Sign In を有効にしたアプリケーションを選択します。DomainClient 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トークンを取得します。AuthenticationAPIClientloginWithNativeSocialToken を呼び出し、Facebook のサブジェクトトークンタイプを指定してセッショントークンを渡します:
MainActivity.kt
サブジェクトトークンタイプ http://auth0.com/oauth/token-type/facebook-info-session-access-token は、認証に Facebook の Native 接続を使用するよう Auth0 に伝えます。
6

すべてをまとめましょう

performLogin メソッドを完成させて、3 つのステップすべてをつなげます: セッショントークンの取得 → ユーザープロファイルの取得 → Auth0 トークンへの交換。
MainActivity.kt
コード内にマジックストリングが散在しないよう、定数 (サブジェクトトークンタイプ、Facebookの権限、Auth0のスコープ) はクラスの先頭で定義しておきましょう。
チェックポイントこれで、Facebookでネイティブ認証を行えるはずです。デバイスにFacebookアプリがインストールされている場合、認証はブラウザーを使わず、そのアプリ内で直接行われます。

トラブルシューティングと詳細設定

token exchange が authentication エラーで失敗する

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

session token request がエラーを返す

修正:
  • R.string.facebook_app_idstrings.xml に正しく設定されていることを確認します
  • fb_exchange_token が Facebook の AccessToken オブジェクトから取得した生の token 文字列であることを確認します
  • 管理者以外のユーザーでテストする場合は、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 permission を拒否した可能性があります — email が null の場合も適切に処理してください
  • fetchUserProfilefields bundle に同じフィールドが含まれていることを確認します

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

  • 本番環境ではログを無効にする: DefaultClientenableLogging = true を削除するか条件付きで有効にしてください — ネットワークトラフィックがログに記録されます
  • token を安全に保存する: SecureCredentialsManager を使用して、Auth0 token を Android Keystore に保存します
  • リフレッシュトークン: offline_access scope を要求し、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 の完全なドキュメントを参照する