本文件說明如何開始使用 Facebook Android SDK,將您的 Android 應用程式與 Facebook 整合。Facebook Android SDK 的最新版本為 12.0.0 版,需要 Android API 15 才能使用。如需有關版本和功能的詳細資訊,請參閱 Facebook Android SDK。
使用 Facebook SDK 時,只要未停用自動記錄事件功能,系統都會自動記錄及收集您應用程式的某些事件供 Facebook 分析工具使用。若要深入瞭解會收集哪些資料,以及如何停用自動事件記錄功能,請參閱自動記錄應用程式事件。
您可以透過下列方式,設定應用程式來使用 Facebook Android SDK:
自 13.0.0 版開始,您使用 Facebook Android SDK 建立的每個應用程式,都會自動將廣告編號權限加入您的應用程式。如需詳細資訊,請參閱 Play 管理中心說明:廣告 ID。
在某些情況下,您可能會選擇不要將廣告編號權限加入應用程式。例如,如果應用程式的顧客是兒童和家庭,廣告編號權限可能就不相關。若要從您的應用程式排除廣告編號權限,請按照本文件稍後的指示操作。
若要在 Android Studio 專案中使用 Facebook SDK,請新增 SDK 為建置相依性,並匯入 SDK。
前往 Android Studio | New Project(新增專案)| Minimum SDK(最低 SDK)。
選擇 API 15:Android 4.0.3(IceCreamSandwich)或以上版本,然後建立新專案。
開啟 Gradle Scripts | build.gradle (Project: <your_project>)
檔案,並加入下列程式碼:
mavenCentral()
儲存並關閉 build.gradle (Project: <your_project>)
檔案。
開啟 Gradle Scripts | build.gradle (Module: app)
檔案,並將下列程式碼加入 dependencies
區段:
implementation 'com.facebook.android:facebook-android-sdk:latest.release'
儲存並關閉 build.gradle (Module: app)
檔案。
建置您的專案。現在您可以將 com.facebook.FacebookSdk
匯入您的應用程式。
將應用程式編號和用戶端權杖加入專案的字串檔案中,並更新資訊清單檔案。請執行下列操作:
在您的應用程式專案中開啟 /app/res/values/strings.xml
檔案。
加入名稱為 facebook_app_id
和 facebook_client_token
的 string
元素,並將值設定為您的應用程式編號和用戶端權杖。例如,如果您的應用程式編號為 1234
,用戶端權杖為 56789
,則程式碼如下所示:
<string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
在您的應用程式專案中開啟 /app/manifests/AndroidManifest.xml
檔案。
將 meta-data
元素加入應用程式編號和用戶端權杖的 application
元素:
<application android:label="@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>
將 uses-permission
元素加入資訊清單中的 application
元素後面:
<uses-permission android:name="android.permission.INTERNET"/>
(選用)若要選擇不包含廣告編號權限,請將 uses-permission
元素加入資訊清單中的 application
元素後面:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
建置您的專案。
如果您要從應用程式分享連結、圖像或影片,請在資訊清單中宣告 FacebookContentProvider
授權。請執行下列操作:
在您的應用程式專案中開啟 /app/manifests/AndroidManifest.xml
檔案。
將 provider
元素加入資訊清單,以宣告 FacebookContentProvider
授權。將您的應用程式編號附加到 authorities
值結尾。例如,如果您的應用程式編號為 1234
,宣告內容如下:
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
建置您的專案。
以下是 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 上,您需要下列項目:
keytool
)在 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 上,您需要下列項目:
keytool
)在 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 最新版本的相依性。
<dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>PUT_LATEST_VERSION_HERE</version> </dependency>
若執行應用程式範例時發生問題,有可能與密鑰雜湊相關。您可能會看到下列其中一種情況:
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
檢查密鑰雜湊,確認您使用的密鑰雜湊是否正確。
您也可以手動修改程式碼範例,以使用正確的密鑰雜湊。例如,在 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=
將密鑰雜湊儲存在開發人員個人檔案中。重新執行範例,並確認您可以成功登入。