開始使用 Facebook Android SDK

本文件說明如何開始使用 Facebook Android SDK,將您的 Android 應用程式與 Facebook 整合。Facebook Android SDK 的最新版本為 12.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 管理中心說明:廣告 ID

在某些情況下,您可能會選擇不要將廣告編號權限加入應用程式。例如,如果應用程式的顧客是兒童和家庭,廣告編號權限可能就不相關。若要從您的應用程式排除廣告編號權限,請按照本文件稍後的指示操作。

Android Studio 設定

建立專案

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

  1. 前往 Android Studio | New Project(新增專案)| Minimum SDK(最低 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 開發人員個人檔案中。您在設定開發環境時安裝的 Java SE 開發套件(JDK)已隨附可用來產生密鑰雜湊的 Keytool。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 上執行下列命令,並替換成您的發行密鑰別名和密鑰庫路徑。

在 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

您可以宣告 Maven 與 Facebook Android SDK 最新版本的相依性。

<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
  • 出現非原生「登入」對話方塊,並顯示錯誤訊息:「……應用程式的 Facebook 登入配置錯誤……」。

檢查密鑰雜湊,確認您使用的密鑰雜湊是否正確。

您也可以手動修改程式碼範例,以使用正確的密鑰雜湊。例如,在 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=

將密鑰雜湊儲存在開發人員個人檔案中。重新執行範例,並確認您可以成功登入。