Skip to main content
ネイティブアプリケーションにこの機能を追加すると、ユーザーはアプリケーション内で Facebook を使ってネイティブ認証できるようになります。これにはウェブブラウザー経由のリダイレクトは不要で、モバイルアプリケーションを Facebook Developer Policy に準拠させることができます。このポリシーでは、モバイルアプリケーションが認証に Android または iOS 向けの Facebook SDK を使用することを求めています。
Facebook SDK と連携する場合、アプリケーションは Facebook とデータを共有することになります。共有されるデータの内容を十分に理解したうえで、その内容をアプリケーションのプライバシーポリシーに適切に反映してください。SDK を介して Facebook と共有されるデータについて、Auth0 は制御できません。Facebook SDK と Facebook Login によって収集されるデータの詳細については、Facebook GDPR のページを確認してください。

仕組み

ネイティブ Facebook ログイン フローの動作は次のとおりです。
  • Step 1: アプリケーションは Facebook SDK を介してユーザーを認証し、を取得します。
  • Step 2: アプリケーションはそのアクセストークンを使用して、特別な Facebook Session Info Access Token をリクエストします。
  • Step 3: Facebook SDK を使用して、ユーザープロファイルを取得します。
  • Step 4: その後、アプリケーションは Facebook Session Info token を使用して Auth0 に認証できます。

前提条件

Auth0 経由でネイティブアプリの ネイティブ Facebook ログイン を設定する前に、次の準備が必要です。
  1. Facebook を Auth0 の接続として設定する
  2. アプリケーションで適切な Facebook SDK を使用する
  3. Auth0 Dashboard > アプリケーション > アプリケーション に移動し、まだ作成していない場合は Auth0 でアプリケーションを作成します。
  4. 設定ページの下部で Show Advanced Settings を選択し、次に Device Settings ビューを選択します。ネイティブソーシャルログイン で、Enable Sign In with Facebook トグルを有効にします。
    ネイティブソーシャルログインの設定

実装

アプリケーション側から見ると、ネイティブ Facebook ログインを使用してユーザープロファイルを認証するプロセスは、4つのステップに分かれます:

ステップ 1

アプリケーションは Facebook SDK を使用してユーザーを認証します。その後、Facebook からアクセストークンを取得します。

ステップ 2

アプリケーションは、アクセストークンを使って Facebook Session Info Access Token をリクエストします。 このリクエストは、次のようになります。
およびレスポンス:

ステップ 3

アプリケーションは Facebook SDK を使用して Facebook からユーザープロファイルを取得する必要があり、その結果、次のようなリクエストが送信されます。

ステップ 4

その後、アプリケーションは、facebook-session-access-token トークンタイプを使用する Token Exchange フローで Auth0 の /oauth/token エンドポイントを呼び出し、セッション情報のアクセストークンと Facebook のユーザープロファイルを使って Auth0 で認証できます。問題なく処理されれば、Auth0 は通常の token exchange のレスポンスに加えて、ユーザープロファイルも返します。ユーザープロファイルは、文字列としてエンコードされた JSON オブジェクトである必要があります。 Auth0 からのレスポンス:

ユーザープロファイルとメールアドレスの検証

前の例では、Facebook からユーザープロファイルを取得し、それを /oauth/token の呼び出しに含める必要がありました。これは、Facebook のセッションアクセストークンではプロファイルを直接取得できず、また Apple’s AppStore Review Guidelines により、Facebook のアクセストークンをサーバーに直接送信することもできないためです。したがって、この方法ではクライアントで取得して Auth0 に送信する必要があります。 Auth0 は、そのユーザープロファイルが Facebook から返されたものと同一であることを保証できないため、email_verified フィールドは false に設定されます。

ログアウト

ネイティブのログイン実装では標準的なブラウザベースのフローを利用しないため、アプリケーションの所有者はログアウト処理も適切に行う必要があります。アプリケーションでログアウトを行う必要がある場合は、Auth0 リフレッシュトークンを取り消すことも行う必要があります。

さらに読む