メインコンテンツへスキップ
このチュートリアルは、ネイティブFacebookログインを使用して、Androidアプリケーションにユーザーログインを追加する方法について説明します。ログインして、アカウント用に構成された例を参考にして、このクリックスタートに従うことをお勧めします。
1

システム要件

  • Android Studio 3.6.1
  • Android SDK 25
  • Emulator - Nexus 5X - Android 6.0
このチュートリアルは、Facebook SDKでログインを実装する方法について説明します。​
2

始める前に

  • FacebookログインSDKをインストールして構成します。https://developers.facebook.comでFacebookアプリの作成プロセスも行います。この手順が終了したら、Facebookログインが統合された状態でモバイルアプリが稼働しているはずです。
DashboardでFacebookネイティブサインインを使用するようにAuth0アプリケーションを構成します。「Facebookログインをネイティブアプリに追加する」を参照してください。この手順が終了したら、アプリケーションはFacebookネイティブログインを実装できるようになります。
3

Facebookのアクセス許可を要求する

アプリケーションでは既にFacebookでサインインすることができますが、リッチユーザープロファイルを確保するには、Facebookログインボタンがセットアップされたアクセス許可を更新する必要があります。要求されたアクセス許可をpublic_profileemailに設定します。これで、アクセス要求がユーザーによって受け入れられたという前提で、ユーザーメールも応答の一部に含まれます。loginButton.setPermissions(Arrays.asList("public_profile", "email"));
4

performLoginメソッドを作成する

次に、Auth0で認証プロセスを始めるために、送信するペイロードの準備を行う新しいメソッドを作成します。内部コールバックを処理するために、小さなインターフェイスを利用します。サンプルでは、メソッドの名前はperformLogin、インターフェイスの名前はSimpleCallbackに指定されています。両方を追加してください。
5

performLoginメソッドを呼び出す

次に、FacebookログインのコールバックのonSuccessメソッドから特定のメソッドを呼び出します。
6

Facebookを統合する

Auth0でFacebookを使ってサインインすると、バックエンドはユーザーが主張する通りの本人であることを確認するために、バックグラウンドで確認作業を実施します。これを実現するには、セッションアクセストークンを提供する必要があります。さらに、このFacebookユーザーを表すために、ユーザーをAuth0で作成する必要がある場合、バックエンドでは姓名やメールなどの一部の情報が必要になります。Auth0ユーザープロファイルでは、メールは(提供された場合)未検証としてフラグが付けられます。セッションアクセストークンとユーザープロファイルを取得するには、Facebook APIに対してさらに2つの要求を行う必要があります。
7

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

Facebook APIの/oauth/access_tokenエンドポイントに対して新しいGET要求を行います。以下のクエリパラメーターを使用します:
  • grant_type: fb_attenuate_token
  • fb_exchange_token:ログイン時に受け取るアクセストークンです。
  • client_id:アプリIDです。この値は、Facebook開発者のダッシュボードから取得したもので、Facebookログインの統合に成功している場合は、アプリケーションで既に使用されているはずです。
この手順で得たロジックを独自のメソッドに投入します。これを前に追加したメソッドから後で呼び出します。サンプルはFacebook SDKのGraphRequestクラスを使用して、この要求を実行します。
8

Facebookのユーザープロファイルを取得する

上の手順と同様に、別のGET要求を行います。エンドポイントパスは、Facebookログイン結果から得たユーザーID値(/904636746222815など)になります。次のパラメーターを使用します:
  • access_token:ログイン時に受け取るアクセストークンです。
  • fields:応答で取得したいユーザープロファイルからのフィールドです。これらは、初めに構成されたFacebookログインボタンのアクセス許可に直接関連付けられています。アクセス許可が任意の場合、ユーザーはまずアクセス許可を付与することに同意する必要があります。Auth0でユーザーをサインアップするには、フルネームとメールを入力するだけで十分です。
9

Auth0を統合する

必要なアーティファクトを取得したら、IDやアクセストークンなどAuth0のユーザー資格情報に交換する準備ができました。しかしまず、その最後の要求を行うためにAuth0 SDKをセットアップする必要があります。

アプリケーションキーを取得する

  1. Auth0 Dashboardの**[Applications(アプリケーション)]** セクションで、[Sign in with Facebook(Facebookでサインイン)] を有効にした既存のアプリケーションを選択します。この手順で不明な点があれば、この記事の上に記載された要件セクションを確認してください。
  2. アプリケーションの設定ページから**[Domain(ドメイン)]** と**[Client ID(クライアントID)]** の値をコピーします。これらはSDKで必要です。
  3. Androidアプリケーションのstrings.xmlファイルで2つの新しいリソースを作成して保存します。キーの名前は以下で使用するキーと一致しなければなりません。
<resources>
<string name="com_auth0_domain">{yourDomain}</string>
<string name="com_auth0_client_id">{yourClientId}</string>
</resources>

Auth0 SDKをインストールする

Androidアプリケーションで、この行をapp/build.gradleファイルに追加します:
dependencies {
implementation 'com.auth0.android:auth0:1.+'
}
次に、Gradle Syncタスクを実行し、プロジェクトとその依存関係を更新します。

Web認証のマニフェストを更新する

アプリケーションがSDKによって提供されるWeb認証モジュールを利用する予定がない場合は、未使用のアクティビティをAndroidManifest.xmlファイルから削除し、マニフェストのプレースホルダー問題を防ぐ必要があります。これを実現するには、アクティビティの宣言を追加し、tools:node=“remove”の注釈を加えます。
<application>
<!-- Add the activity declaration line below -->
<activity
android:name="com.auth0.android.provider.AuthenticationActivity"
tools:node="remove" />
</application>
ただし、Web認証をサポートする予定の場合は、ここでマニフェストのプレースホルダーを宣言する方法を確認してください。
10

受け取ったデータをAuth0トークンに交換する

SDKは、使用する前にインスタンス化する必要があります。クラスレベルでフィールドを定義し、onCreateメソッドで初期化します。上の手順で定義した資格情報がAuth0コンストラクターに渡されたら、AuthenticationAPIClientの新しいインスタンスが作成されます。
private AuthenticationAPIClient auth0Client;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

Auth0 account = new Auth0(getString(R.string.com_auth0_client_id), getString(R.string.com_auth0_domain));

auth0Client = new AuthenticationAPIClient(account);

//...

}
ロジックを維持するメソッドを作成し、取得した2つのアーティファクトをAuth0のユーザー資格情報に交換します。サンプルでは、このメソッドの名前はexchangeTokensです。APIクライアントは、トークンとサブジェクトタイプを受け取るloginWithNativeSocialTokenメソッドを宣言します。前者はセッショントークンに対応し、後者はバックエンドが認証しようとする接続のタイプを示します。ネイティブFacebookログインでは、以下の値を使用します:"http://auth0.com/oauth/token-type/facebook-info-session-access-token"構成する必要がある他の値は、ユーザープロファイル(user_profileキーを使用)とAuth0トークンに含まれる要求されたスコープです。
変化しないことを把握している値はすべて、クラスの上部で定数として維持しておくと便利です。サンプルは、件名トークンタイプ、Facebookのアクセス許可、およびAuth0のスコープに対して定数を利用します。Auth0のスコープの詳細については、特集記事をお読みください。
11

performLoginメソッドを更新する

すべての手順が独自のメソッドで定義されたら、performLoginメソッドに全部まとめて入れましょう。すべて正常に実行されると、FacebookログインSDKでネイティブ認証ができるようになります。つまり、Facebookアプリがデバイスにインストールされていると、認証はブラウザーアプリでなくアプリケーションを介して処理されます。

次のステップ

成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。
  • Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
  • Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます
I