Android用Facebook SDKを使用すると、Facebookログインでアプリにサインインできます。利用者はFacebookでアプリにログインする際に、アクセス許可をアプリに付与して、アプリが情報を取得したり、利用者の代わりにFacebookでアクションを実行したりすることを許可します。
FacebookログインをAndroidアプリに統合する方法を例証しているサンプルプロジェクトについては、GitHubのFBLoginSampleをご覧ください。
Facebookログインをアプリに追加するには、以下の手順に従います。
buildscript { repositories {}}
に含まれていることを確認します。 dependencies{}
セクションに追加して、最新バージョンのFacebookログインSDKに依存するようにします。 Android用Facebook SDKのバージョン5.15以降を使用する場合は、Chromeカスタムタブのアクティビティとインテントフィルターを追加する必要はありません。この機能はSDKに含まれています。
Facebookログインを統合すると、特定のアプリイベントは、アプリイベントの自動記録を無効にしない限り、イベントマネージャのために自動的に記録、収集されます。これは、アプリコードで変更できます。また、アプリダッシュボードかイベントマネージャの[アプリイベント]の下のトグルで切り替えることもできます。AutoLogAppEventsEnabled
のフラグとトグルとの間で値が競合している場合、「Facebook SDKの自動イベント記録」のトグル値が優先されることに注意してください。収集される情報やアプリイベントの自動記録を無効にする方法については、アプリイベントの自動記録をご覧ください。
FacebookActivity
を追加します。 /app/res/values/strings.xml
ファイルを開きます。facebook_app_id
、fb_login_protocol_scheme
、facebook_client_token
の名前のstring
要素を追加し、値を実際のアプリIDおよびクライアントトークンに設定します。例えば、アプリIDが1234
、クライアントトークンが56789
の場合、コードは次のようになります。 /app/manifest/AndroidManifest.xml
ファイルを開きます。 application
要素に該当アプリIDおよびクライアントトークンのmeta-data
要素を追加します。 application
要素内にFacebookのアクティビティと、Chromeカスタムタブのアクティビティとインテントフィルターを追加します。 <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>
application
要素の後のマニフェストに、uses-permission
要素を追加します。 application
要素の後のマニフェストにuses-permission
要素を追加します。 AndroidManifest.xml
ファイル内のAutoLogAppEventsEnabled
フラグを設定することで、アプリイベントの自動記録をtrueまたはfalseに直接設定できるようになります。
LoginButton
をSDKから追加することです。 LoginButton
という1つのUIエレメントに、 LoginManager
で使用可能な機能性がまとめられています。ユーザーがこのボタンをクリックすると、ログインが初期化され、 LoginManager
でセットされたアクセス許可が使用されます。Facebookログインには、外部ユーザーが使用する、高度なpublic_profileアクセス許可が必要です。ボタンはログイン状態によって変化し、ユーザーの認証状態に合わせたテキストが表示されます。 CallbackManager.Factory.create
を呼び出してcallbackManagerを作成し、ログイン応答を処理します。 Login button
のプロパティをカスタマイズして、onCreate()
メソッドまたはonCreateView()
メソッドのコールバックに登録できます。カスタマイズできるプロパティはLoginBehavior
、DefaultAudience
、ToolTipPopup.Style
と、LoginButton
のアクセス許可などです。例: private static final String EMAIL = "email"; loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList(EMAIL)); // If you are using in a fragment, call loginButton.setFragment(this); // Callback registration loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginManager
またはLoginButton
のいずれかを使用してコールバックを登録する必要があります。LoginButton
によるコールバックの登録では、コールバックをログインマネージャに登録する必要はありません。 onCreate()
メソッドにLoginManagerコールバックを追加します。 callbackManager = CallbackManager.Factory.create(); LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
LoginResult
パラメーターに新しいAccessToken
と、最後に付与または拒否されたアクセス許可が追加されます。 registerCallback
は必要なく、後述のAccessTokenTracker
クラスを使用して現在のアクセストークンの変更に従うことを選択できます。 onActivityResult
メソッドでcallbackManager.onActivityResult
を呼び出し、callbackManager
経由でLoginManager
にログインの結果を渡します。 AndroidXのアクティビティまたはフラグメントを使っている場合、onActivityResultをオーバーライドする必要はありません。
onActivityResult
をcallbackManager
に転送します。 LoginManager
はその利用者の現在のAccessToken
とProfile
を設定します。FacebookSDKはこのデータを共有設定に保存し、セッションの開始時に設定します。AccessToken.getCurrentAccessToken()
とProfile.getCurrentProfile()
をチェックすれば、この利用者がログインしているかどうかを確認できます。 AccessToken.getCurrentAccessToken
を読み込むことができます。トークンの有効性は、次のようにActivity
のonCreate
メソッドで確認します。/app/manifest/AndroidManifest.xml
ファイルのqueries
エレメントに以下のコードを追加します。 次のコードは、高速ログインを有効にする方法を示しています。 LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() { @Override public void onCompleted(AccessToken accessToken) { // User was previously logged in, can log them in directly here. // If this callback is called, a popup notification appears that says // "Logged in as <User Name>" } @Override public void onFailure() { // No access token could be retrieved for the user } @Override public void onError(Exception exception) { // An error occurred } });