Android SDK 新手指南
若要將您的 Android 應用程式與 Facebook 整合,Facebook Android SDK 是最簡單的方式。此 SDK 提供了下列功能:
- Facebook 登入 - 讓您使用 Facebook 憑證驗證用戶。
- Account Kit:用戶只要使用電話號碼或電郵地址即可登入應用程式。
- 分享和傳送對話框 - 啟用應用程式分享內容至 Facebook 的功能。
- 應用程式事件 - 在您的應用程式中記錄事件。
- Graph API - 讀取與寫入 Graph API。
有 2 種方式可以設定應用程式以使用 Facebook SDK:
- 使用快速入門。
- 使用 Facebook SDK 設定您的專案
設定 Android Studio
若要在專案中使用 Facebook SDK,請以建置相依性的方式加入,然後將其匯入。
1.前往 Android Studio | 新增專案 | 最低 SDK。
2.選擇 API 15: Android 4.0.3 或更新版本,然後建立新專案。
3.建立新專案後,開啟
your_app | build.gradle。

4.將下列程式碼加入模組級別 /app/build.gradle(位於 dependencies 前):
repositories {
mavenCentral()
}5.在 build.gradle 檔案中加入 Facebook SDK 最新版本的編譯相依性:
dependencies {
compile 'com.facebook.android:facebook-android-sdk:4.+'
}6.建置您的專案。您現在即可將 com.facebook.FacebookSdk 匯入您的應用程式。
開始使用前,您需要先初始化 Facebook SDK。從 Application 類別中的 onCreate,新增調用至 FacebookSdk.sdkInitialize:
// Add this to the header of your file:
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
public class MyApplication extends Application {
// Updated your class body:
@Override
public void onCreate() {
super.onCreate();
// Initialize the SDK before executing any other operations,
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
}
}加入 Facebook 應用程式編號
然後將您的 Facebook 應用程式編號加入專案的字串檔案,並更新 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 或 jcentery 來使用中央存放庫相依性。所以當 SDK 本機副本更新時,範例就會反映變更。
若要快速執行範例,您可針對開發環境產生密鑰雜湊。請將下列程式碼加入應用程式範例的 Facebook 開發人員個人檔案。用以產生密鑰雜湊的 Keytool 會包含在您安裝的 Java SE 開發套件 (JDK) 中,以便協助設定開發環境。您可以在 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 之間的資訊交換,您需要產生「發行密鑰雜湊」,並將其加入 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 套件的正確套件名稱和 MainActivity 類別。
配搭 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=
將該密鑰雜湊儲存在您的開發人員個人檔案。重新執行範例,並驗證是否可成功登入。