Facebook Android SDK 讓用戶可使用 Facebook 登入來登入您的應用程式。當用戶使用 Facebook 帳戶登入您的應用程式時,用戶可向您的應用程式授予權限,以便您代表用戶在 Facebook 上檢索資訊或執行動作。
如需透過範例專案了解如何將 Facebook 登入整合至 Android 應用程式,請前往 GitHub 參閱 FBLoginSample。
按照下方步驟在應用程式中加入 Facebook 登入。
buildscript { repositories {}}
中: dependencies{}
部分,以便使用最新版本的 Facebook 登入 SDK: 如果您使用 v5.15 或以上版本的 Android 專用 Facebook SDK,則不需要為 Chrome 自訂分頁新增動態或意圖篩選條件。此功能包含在 SDK 中。
在您整合 Facebook 登入後,除非您停用事件自動記錄功能,否則系統會為事件管理工具自動記錄並蒐集特定應用程式事件。若要進一步了解系統會蒐集哪些資料,以及如何停用事件自動記錄功能,請參閱應用程式事件自動記錄一文。
FacebookActivity
加入您的 Android 資訊清單。 /app/res/values/strings.xml
檔案。facebook_app_id
、fb_login_protocol_scheme
和 facebook_client_token
的 string
素材,並將值設定為您的應用程式編號和用戶端憑證。例如,如果您的應用程式編號為 1234
,而用戶端憑證為 56789
,則程式碼如下所示: /app/manifest/AndroidManifest.xml
檔案。 meta-data
素材加入您應用程式編號和用戶端憑證的 application
素材: 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>
uses-permission
素材加入 application
素材之後的資訊清單: uses-permission
素材加入 application
素材之後的資訊清單: 您可以在 AndroidManifest.xml
檔案設定 AutoLogAppEventsEnabled
標示,以直接將自動記錄應用程式事件的功能設為「true」或「false」。
LoginButton
。這個 LoginButton
是一個用戶介面元素,當中包含 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
註冊回呼,您便無需在 LoginManager 註冊回呼。 onCreate()
方法: 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 } });