Android - Facebookログイン
このチュートリアルは、ネイティブFacebookログインを使用して、Androidアプリケーションにユーザーログインを追加する方法について説明します。ログインして、アカウント用に構成された例を参考にして、このクリックスタートに従うことをお勧めします。
Android Studio 3.6.1
Android SDK 25
Emulator - Nexus 5X - Android 6.0
このチュートリアルは、Facebook SDKでログインを実装する方法について説明します。
FacebookログインSDKをインストールして構成します。https://developers.facebook.comでFacebookアプリの作成プロセスも行います。この手順が終了したら、Facebookログインが統合された状態でモバイルアプリが稼働しているはずです。
DashboardでFacebookネイティブサインインを使用するようにAuth0アプリケーションを構成します。「Facebookログインをネイティブアプリに追加する」を参照してください。この手順が終了したら、アプリケーションはFacebookネイティブログインを実装できるようになります。
アプリケーションでは既にFacebookでサインインすることができますが、リッチユーザープロファイルを確保するには、Facebookログインボタンがセットアップされたアクセス許可を更新する必要があります。
要求されたアクセス許可をpublic_profile
とemail
に設定します。これで、アクセス要求がユーザーによって受け入れられたという前提で、ユーザーメールも応答の一部に含まれます。
loginButton.setPermissions(Arrays.asList("public_profile", "email"));
次に、Auth0で認証プロセスを始めるために、送信するペイロードの準備を行う新しいメソッドを作成します。
内部コールバックを処理するために、小さなインターフェイスを利用します。
サンプルでは、メソッドの名前はperformLogin
、インターフェイスの名前はSimpleCallback
に指定されています。両方を追加してください。
次に、FacebookログインのコールバックのonSuccess
メソッドから特定のメソッドを呼び出します。
Auth0でFacebookを使ってサインインすると、バックエンドはユーザーが主張する通りの本人であることを確認するために、バックグラウンドで確認作業を実施します。これを実現するには、セッションアクセストークンを提供する必要があります。
さらに、このFacebookユーザーを表すために、ユーザーをAuth0で作成する必要がある場合、バックエンドでは姓名やメールなどの一部の情報が必要になります。Auth0ユーザープロファイルでは、メールは(提供された場合)未検証としてフラグが付けられます。
セッションアクセストークンとユーザープロファイルを取得するには、Facebook APIに対してさらに2つの要求を行う必要があります。
Facebook APIの/oauth/access_token
エンドポイントに対して新しいGET要求を行います。以下のクエリパラメーターを使用します:
grant_type
:fb_attenuate_token
。fb_exchange_token
:ログイン時に受け取るアクセストークンです。client_id
:アプリIDです。この値は、Facebook開発者のダッシュボードから取得したもので、Facebookログインの統合に成功している場合は、アプリケーションで既に使用されているはずです。
この手順で得たロジックを独自のメソッドに投入します。これを前に追加したメソッドから後で呼び出します。
サンプルはFacebook SDKのGraphRequest
クラスを使用して、この要求を実行します。
上の手順と同様に、別のGET要求を行います。エンドポイントパスは、Facebookログイン結果から得たユーザーID値(/904636746222815
など)になります。次のパラメーターを使用します:
access_token
:ログイン時に受け取るアクセストークンです。fields
:応答で取得したいユーザープロファイルからのフィールドです。これらは、初めに構成されたFacebookログインボタンのアクセス許可に直接関連付けられています。アクセス許可が任意の場合、ユーザーはまずアクセス許可を付与することに同意する必要があります。Auth0でユーザーをサインアップするには、フルネームとメールを入力するだけで十分です。
必要なアーティファクトを取得したら、IDやアクセストークンなどAuth0のユーザー資格情報に交換する準備ができました。しかしまず、その最後の要求を行うためにAuth0 SDKをセットアップする必要があります。
アプリケーションキーを取得する
Auth0 Dashboardの[Applications(アプリケーション)]セクションで、[Sign in with Facebook(Facebookでサインイン)]を有効にした既存のアプリケーションを選択します。この手順で不明な点があれば、この記事の上に記載された要件セクションを確認してください。
アプリケーションの設定ページから[Domain(ドメイン)]と[Client ID(クライアントID)]の値をコピーします。これらはSDKで必要です。
Androidアプリケーションのstrings.xmlファイルで2つの新しいリソースを作成して保存します。キーの名前は以下で使用するキーと一致しなければなりません。
<resources> <string name="com_auth0_domain">{yourDomain}</string> <string name="com_auth0_client_id">{yourClientId}</string> </resources>
Was this helpful?
/
Auth0 SDKをインストールする
Androidアプリケーションで、この行をapp/build.gradleファイルに追加します:
dependencies {
implementation 'com.auth0.android:auth0:1.+'
}
Was this helpful?
次に、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>
Was this helpful?
ただし、Web認証をサポートする予定の場合は、ここでマニフェストのプレースホルダーを宣言する方法を確認してください。
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);
//...
}
Was this helpful?
ロジックを維持するメソッドを作成し、取得した2つのアーティファクトをAuth0のユーザー資格情報に交換します。サンプルでは、このメソッドの名前はexchangeTokens
です。
APIクライアントは、トークンとサブジェクトタイプを受け取るloginWithNativeSocialToken
メソッドを宣言します。前者はセッショントークンに対応し、後者はバックエンドが認証しようとする接続のタイプを示します。
ネイティブFacebookログインでは、以下の値を使用します:"http://auth0.com/oauth/token-type/facebook-info-session-access-token"
構成する必要がある他の値は、ユーザープロファイル(user_profile
キーを使用)とAuth0トークンに含まれる要求されたスコープです。
すべての手順が独自のメソッドで定義されたら、performLogin
メソッドに全部まとめて入れましょう。
すべて正常に実行されると、FacebookログインSDKでネイティブ認証ができるようになります。つまり、Facebookアプリがデバイスにインストールされていると、認証はブラウザーアプリでなくアプリケーションを介して処理されます。
Next Steps
Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
- Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
- Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality
Sign up for an or to your existing account to integrate directly with your own tenant.