Android SDK 新手指南

若要將您的 Android 應用程式與 Facebook 整合,使用 Facebook Android SDK 是最簡單的方式。此 SDK 提供了下列功能:

有兩種方法可用於設定應用程式,以使用 Facebook SDK:

  • 使用快速入門。
  • 將您的專案設定為使用 Facebook SDK。

快速入門

若要取得 Facebook 應用程式編號,請設定您的應用程式設定,再匯入 Facebook SDK,接著點擊下方按鈕,然後按照線上指示操作。

Android 快速入門

 

相關指南:

設定 Android Studio

若要在專案中使用 Facebook SDK,請以建置相依性的方式加入,然後將其匯入。

1.前往 Android Studio | New Project(新增專案)| Minimum SDK(最低 SDK)

2.選擇 API 15: Android 4.0.3 或更新版本,然後建立新專案。

3.建立新專案後,請開啟 your_app | build.gradle

4.將以下項目新增至 build.gradle (Project) 檔案的 buildscript { repositories {}} 區塊。

mavenCentral() 

5.將以下項目新增至 build.gradle (module: app) 檔案的 dependencies {} 區塊,以編譯 Facebook SDK 的最新版本:

此物件應刪除。請聯絡 Arsenio Locsin 以瞭解詳情。

使用 Facebook SDK 時,您的應用程式會自動記錄發生的事件,並收集資料以供 Facebook 分析工具使用,除非您停用自動事件記錄功能。如需深入瞭解應用程式將收集哪些資料,以及如何停用自動事件記錄,請參閱自動應用程式事件記錄

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

加入 Facebook 應用程式編號

接著,請將您的 Facebook 應用程式編號加到專案的 strings 檔案中,並更新 Android Manifest:

1.開啟 strings.xml 檔案。路徑範例:/app/src/main/res/values/strings.xml

2.加入一個新字串,名稱是 facebook_app_id,值則是您的 Facebook 應用程式編號

3.開啟 AndroidManifest.xml

4.將 uses-permission 元素加入 Manifest:

<uses-permission android:name="android.permission.INTERNET"/>

5.將 meta-data 元素加入 application 元素:

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>

傳送圖像或影片

若要透過 Android 版 Facebook 應用程式分享連結、圖像或影片,您還必須在 Manifest 中宣告 FacebookContentProvider

將您的應用程式編號附加到 authorities 值的結尾。例如,如果您的 Facebook 應用程式編號為 1234,則宣告的格式如下:

<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />

搭配 ProGuard 使用 SDK

若要搭配 ProGuard 使用 Facebook Android SDK,您無需執行其他任何步驟。如需 ProGuard 的操作指示,請參閱 Android 開發人員網站:縮減程式碼和資源

執行應用程式範例

SDK 中隨附下列範例:

  • HelloFacebookSample - 展示個人檔案存取、近況更新和相片上傳
  • RPSSample - 使用原生「分享」對話方塊、「開放社交關係圖」發佈、挑選工具、邀請及深層連結。
  • Scrumptious - 登入、要求、挑選工具、相片上傳及「開放社交關係圖」發佈。

您可以將 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 上請執行:

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

這樣會產生包含 28 個字元的字串。

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

在「開發人員設定」中,從功能表選擇應用程式範例,然後在個人檔案中加入並儲存密鑰雜湊:

如果您使用多部裝置進行開發,可加入多個密鑰雜湊。

您現在就可以編譯與執行所有範例,包括使用「Facebook 登入」的範例。

建立開發密鑰雜湊

Facebook 使用密鑰雜湊來驗證您的應用程式和 Facebook 應用程式之間的互動。如果執行的應用程式具備「Facebook 登入」功能,您就必須將 Android 開發密鑰雜湊加到您的 Facebook 開發人員個人檔案中。

對於發行的應用程式版本,您也必須產生並設定發行密鑰雜湊

無論是 OS X 或 Windows,您都能產生密鑰雜湊,或是使用 Settings.getApplicationSignature(Context) 的傳回值來取得密鑰雜湊。如需指示,請參閱執行應用程式範例


後續步驟

在安裝 Facebook Android SDK 並設定 Facebook 應用程式編號後,您會看到下列功能:


設定發行密鑰雜湊

若要驗證應用程式和 Facebook 之間的資訊交換,您需要產生「發行密鑰雜湊」,並加到 Facebook 應用程式編號內的 Android 設定中。如果缺少這項密鑰雜湊,您在商店中發行的應用程式可能無法與 Facebook 順利整合。

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

應用程式發行時,通常會簽署與您開發環境不同的簽章。因此,請務必建立「發行密鑰雜湊」並加到 Facebook 應用程式編號的 Android 設定中。

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

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

在 Windows 上請使用:

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

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

此指令應會產生長度共 28 個字元的字串。複製此「發行密鑰雜湊」,然後貼入您 Facebook 應用程式編號的 Android 設定。

您也應該檢查 Facebook 應用程式編號的 Android 設定,查看其中是否也包含 Android 套件的正確套件名稱和主要活動類別。


搭配 Maven 使用 Facebook SDK

您可宣告 Maven 與 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 登入』……」。

檢查密鑰雜湊,並確定是否使用正確的密鑰雜湊。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=

將該密鑰雜湊儲存在您的開發人員個人檔案。重新執行範例,並驗證是否可成功登入。