Facebook Android SDK 新手指南

本文件說明如何開始使用 Facebook Android SDK 將您的 Android 應用程式與 Facebook 整合。目前 Facebook Android SDK 的版本為 v12.0.0,而且需要使用 Android API 15。如需進一步了解版本和功能,請參閱 Facebook Android SDK

使用 Facebook SDK 時,系統會為 Facebook 應用程式分析工具自動記錄並收集部分事件的資料,除非您停用了自動事件記錄功能。若要進一步瞭解系統會收集哪些資料,以及如何自動事件記錄功能,請參閱自動應用程式事件記錄一文。

您可以設定應用程式,透過下列方式使用 Facebook Android SDK:

  • 使用「快速入門」。
  • 使用 Facebook Android SDK 設定專案。

快速入門

如要取得 Facebook 應用程式編號,請配置您的應用程式設定、匯入 Facebook Android SDK,然後點擊下方按鈕並按照指示操作。

Android 快速入門

準備工作

您需要準備以下事項:

了解廣告編號權限

由 13.0.0 版起,使用 Facebook Android SDK 建立的每個應用程式都會自動為應用程式新增廣告編號權限。詳情請參閱 Play 管理中心說明:廣告編號

在某些情況下,您可能不希望在應用程式加入廣告編號權限。舉例來說,如果應用程式的顧客為兒童和家庭,廣告編號權限便可能不太相關。如要從應用程式移除廣告編號權限,請按照本文件後續部分的指示操作。

Android Studio 設定

建立您的專案

如要在 Android Studio 專案中使用 Facebook SDK,請將其新增為建立相依性並匯入。

  1. 前往 Android Studio > 新專案 > 最低版本 SDK

  2. 選擇 API 15:Android 4.0.3(IceCreamSandwich)或以上版本,然後建立新專案。

  3. 開啟 Gradle Scripts | build.gradle (Project: <your_project>) 檔案並加入以下程式碼:

    mavenCentral()
    
  4. 儲存並關閉 build.gradle (Project: <your_project>) 檔案。

  5. 開啟 Gradle Scripts | build.gradle (Module: app) 檔案,並在 dependencies 部分加入以下程式碼:

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. 儲存並關閉 build.gradle (Module: app) 檔案。

  7. 建立您的專案。現在您可以將 com.facebook.FacebookSdk 匯入應用程式。

更新您的資訊清單

應用程式編號用戶端憑證加入專案的字串檔案,然後更新資訊清單檔案。執行以下操作:

  1. 開啟應用程式專案中的 /app/res/values/strings.xml 檔案。

  2. 加入名稱為 facebook_app_idfacebook_client_tokenstring 素材,並將值設定為您的應用程式編號用戶端憑證。例如,如果您的應用程式編號為 1234,而用戶端憑證為 56789,則程式碼如下所示:

    <string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
  3. 開啟應用程式專案中的 /app/manifests/AndroidManifest.xml 檔案。

  4. meta-data 素材加入您應用程式編號和用戶端憑證的 application 素材:

    <application android:label="&#064;string/app_name" ...>
        ...
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
  5. uses-permission 素材加入 application 素材之後的資訊清單:

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (可選)如要拒絕加入廣告編號權限,請將 uses-permission 素材加入 application 素材之後的資訊清單:

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
  7. 建立您的專案。

啟用分享功能

如要分享應用程式中的連結、圖片或影片,請在資訊清單中聲明 FacebookContentProvider 權限。執行以下操作:

  1. 開啟應用程式專案中的 /app/manifests/AndroidManifest.xml 檔案。

  2. provider 素材加入 FacebookContentProvider 權限的資訊清單。將您的應用程式編號附加至 authorities 值的結尾。例如,如果應用程式編號為 1234,則聲明如下:

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. 建立您的專案。

運行範例應用程式

Facebook Android SDK 隨附以下範例:

您可將 Facebook SDK 匯入 Android Studio 專案,以嘗試運行這些範例。這些範例使用專案相依性,而非透過 Maven Central 或 jcenter 來使用中央儲存庫相依性。所以,當 SDK 本機副本更新時,範例就會顯示變更。

如要快速運行範例應用程式,您可以為開發環境產生密鑰雜湊。請將下列程式碼加入範例應用程式的 Facebook 開發人員個人檔案。用於產生密鑰雜湊的 Keytool 會包含在您所安裝的 Java SE 開發套件(JDK)中,以便協助設定開發環境。您可以透過 OpenSSL 下載 OpenSSL。

若是 OS X,請運行以下內容:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

若是 Windows,您需要以下內容:

在 Java SDK 資料夾的指令提示運行以下指令。此操作會產生一個包含 28 個字元的字串。

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

前往 Facebook 開發人員網站。登入 Facebook,然後使用右上方的下拉式選單前往開發人員設定

在開發人員設定中,選擇選單中的「範例應用程式」,然後在個人檔案中新增並儲存密鑰雜湊:

開發時如需使用多部機器,您可以新增多個密鑰雜湊。

您現在可以編譯與運行所有範例,包括使用 Facebook 登入功能的應用程式。

建立開發密鑰雜湊

Facebook 使用密鑰雜湊來驗證您的應用程式和 Facebook 應用程式之間的互動。如果運行使用 Facebook 登入功能的應用程式,您需要將 Android 開發密鑰雜湊新增至您的 Facebook 開發人員個人檔案。

若是您推出的應用程式版本,您也需要產生並設定發行密鑰雜湊

不論是 OS X 還是 Windows,您都可以透過產生密鑰雜湊或使用 Settings.getApplicationSignature(Context) 傳回的值來取得密鑰雜湊。如需相關指示,請參閱運行範例應用程式

建立發行密鑰雜湊

如要驗證應用程式和 Facebook 之間的資訊交換,您需要產生發行密鑰雜湊,並將其加入 Facebook 應用程式編號內的 Android 設定。否則,當您在商店中推出應用程式後,Facebook 整合功能可能無法正常運作。

在上一個步驟中,您應該已經使用開發環境的密鑰雜湊更新 Facebook 開發人員設定

發佈應用程式時,系統通常會使用與開發環境不同的簽章來簽署。因此,您需要確保自己建立發行密鑰雜湊,並將其加入 Facebook 應用程式編號的 Android 設定。

若要產生發行密鑰雜湊,請在 Mac 或 Windows 運行下列指令,並替換成您的發行密鑰別名和 KeyStore 路徑。

若是 Mac OS,請運行:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

若是 Windows,您需要以下內容:

在 Java SDK 資料夾的指令提示運行以下指令:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64

請務必使用最初建立發行密鑰時所設定的密碼。

此指令應該會產生一個包含 28 個字元的字串。複製此發行密鑰雜湊,然後貼上您 Facebook 應用程式編號的 Android 設定。

您亦需要查看 Facebook 應用程式編號的 Android 設定,了解當中是否同樣包含 Android 套件的正確套件名稱和主要活動類別。

配合 Maven 使用 Facebook Android SDK

您可以使用 Facebook Android SDK 的最新適用版本聲明 Maven 相依性。

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

解決有關範例應用程式的問題

如果您在運行範例應用程式時遇到問題,這可能與密鑰雜湊相關。您可能會遇到以下其中一個情況:

  • 畫面顯示原生「登入」對話框,但在接受權限後仍然處於登出狀態,而 logcat 亦包含一項例外項目:
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504):
com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
  • 畫面顯示非原生「登入」對話框及錯誤訊息:「..App is Misconfigured for facebook login...」(..應用程式的 Facebook 登入」配置出錯……)。

檢查密鑰雜湊,從而確保自己使用正確的密鑰雜湊。I

您也可以手動修改範例程式碼,以使用正確的密鑰雜湊。例如,在 HelloFacebookSampleActivity 類別中,對 onCreate() 作出臨時變更:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
        
    } catch (NoSuchAlgorithmException e) {
        
    }
    
    ...

儲存變更,然後重新運行範例。檢查 logcat 輸出中是否包含以下類似訊息:

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

將密鑰雜湊儲存至開發人員個人檔案。重新運行範例,驗證自己能否成功登入。