此文檔基于 FaceBook 官方文檔
在 Android 平臺分享菩鲜,以后會推出Facebook登錄
本指南詳細(xì)介紹如何通過 Android 應(yīng)用將內(nèi)容分享到 Facebook驶忌。用戶通過您的應(yīng)用分享時,相關(guān)內(nèi)容會在其時間線上顯示座享,并且可能在其好友的動態(tài)消息中顯示。
用戶還可通過您的應(yīng)用將內(nèi)容分享到 Facebook Messenger旨袒。
Android Studio 設(shè)置
要在項目中使用 Facebook SDK瓣铣,請將其添加為構(gòu)建依賴項,然后導(dǎo)入碗旅。
1.前往 Android Studio | New Project(新項目)| MinimumSDK(最低 SDK)
2.選擇 API 15: Android 4.0.3或更高版本渡处,然后創(chuàng)建新項目。
3.創(chuàng)建新項目后祟辟,打開 your_app | build.gradle(您的應(yīng)用 | build.gradle)
4.將以下字串添加至模塊級 /app/build.gradle的 dependencies之前:
repositories { mavenCentral() }
5.將配置最新版本 Facebook SDK 的 compile 依賴項添加到 build.gradle
文件:
dependencies { compile 'com.facebook.android:facebook-android-sdk:4.+'}
6.構(gòu)建項目医瘫,然后即可將 com.facebook.FacebookSdk 導(dǎo)入應(yīng)用。
使用 Facebook SDK 之前旧困,需要先進(jìn)行初始化醇份。添加調(diào)用 FacebookSdk.sdkInitialize或onCreate 內(nèi) Activity中的 Application:
// Add this to the header of your file:import com.facebook.FacebookSdk;
// Updated your class body:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
// Initialize the SDK before executing any other operations,
// especially, if you're using Facebook UI elements.
}
添加 Facebook 應(yīng)用編號
然后向項目的 strings 文件添加您的 Facebook 應(yīng)用編號,并更新 Android 清單:
1.打開 strings.xml文件吼具。示例路徑:/app/src/main/res/values/strings.xml被芳。
2.添加新的字符串(名稱為 facebook_app_id,值為 Facebook 應(yīng)用編號)
3.打開 AndroidManifest.xml
4.將 uses-permission元素添加到清單:
<uses-permission android:name="android.permission.INTERNET"/>
5.將 meta-data元素添加到 application元素內(nèi):
<application android:label="@string/app_name" ...>
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/> </application>
使用登錄或分享功能
要使用 Facebook 登錄或分享功能馍悟,還需要將 FacebookActivity
添加到清單:
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
發(fā)送圖片或視頻
如果要通過 Android 版 Facebook 應(yīng)用分享鏈接畔濒、圖片或視頻,還需要在清單文件中聲明FacebookContentProvider锣咒。
在 authorities值的末尾添加您的應(yīng)用編號侵状。例如,如果 Facebook 應(yīng)用編號是 1234毅整,則聲明應(yīng)如下圖所示:
<provider
android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
結(jié)合使用 SDK 和 ProGuard無需執(zhí)行任何其他步驟趣兄,即可對 Android 版 Facebook SDK 使用 ProGuard。如需獲取關(guān)于 Proguard 的說明悼嫉,請參閱 Android Tools Project Site 的 Running ProGuard 部分艇潭。
創(chuàng)建開發(fā)密鑰哈希
Facebook 使用密鑰哈希驗(yàn)證您的應(yīng)用和 Facebook 應(yīng)用之間的互動。如果運(yùn)行使用 Facebook 登錄功能的應(yīng)用,則您需要向 Facebook 開發(fā)者資料頁添加 Android 開發(fā)密鑰哈希蹋凝。
對于您發(fā)布的應(yīng)用版本鲁纠,也需要生成和設(shè)置發(fā)布密鑰哈希。
在 OS X 或 Windows 內(nèi)鳍寂,您可以直接生成密鑰哈希改含,也可以使用Settings.getApplicationSignature(Context)
返回的值獲得哈希。如需獲取詳細(xì)說明迄汛,請參閱運(yùn)行示例應(yīng)用捍壤。
后續(xù)步驟
安裝 Android 版 Facebook SDK 并配置 Facebook 應(yīng)用編號后,將激活以下功能:
Android 版 Facebook 登錄
應(yīng)用事件
“分享”和“發(fā)送”對話框
設(shè)置發(fā)布密鑰哈希
要驗(yàn)證您的應(yīng)用與 Facebook 之間的信息交換鞍爱,您需要生成一個發(fā)布密鑰哈希鹃觉,并將它添加到 Facebook 應(yīng)用編號內(nèi)的 Android 設(shè)置。如果不執(zhí)行這個操作睹逃,當(dāng)應(yīng)用發(fā)布到商店后帜慢,應(yīng)用內(nèi)的 Facebook 集成可能不會正常運(yùn)行。
在之前的步驟中唯卖,您應(yīng)該已使用適用于您的開發(fā)環(huán)境的密鑰哈希更新 Facebook 開發(fā)者設(shè)置粱玲。
發(fā)布應(yīng)用后,應(yīng)用通常會簽上您的開發(fā)環(huán)境的不同簽名拜轨。所以抽减,請務(wù)必創(chuàng)建發(fā)布密鑰哈希,并將它添加到 Facebook 應(yīng)用編號的 Android 設(shè)置橄碾。
要生成發(fā)布密鑰哈希卵沉,請在 Mac 或 Windows 內(nèi)運(yùn)行以下命令,并替換您的發(fā)布密鑰別名和 keystore 路徑法牲。在 OS X 中運(yùn)行:
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
請務(wù)必使用您在首次創(chuàng)建發(fā)布密鑰時設(shè)置的密碼史汗。
此命令將生成包含 28 個字符的字符串。復(fù)制此發(fā)布密鑰哈希拒垃,并將其粘貼至 Facebook 應(yīng)用編號的 Android 設(shè)置停撞。
此外,還應(yīng)檢查 Facebook 應(yīng)用編號的 Android 設(shè)置是否還包括正確的包名和 Android 包的主要活動類別悼瓮。
結(jié)合使用 Facebook SDK 和 Maven
您可以聲明 Maven 與 Android 版 SDK 最新可用版本的依賴關(guān)系:
<dependency>
<groupId>com.facebook.android</groupId>
<artifactId>facebook-android-sdk</artifactId>
<version>PUT_LATEST_VERSION_HERE</version>
</dependency>
示例應(yīng)用疑難解答
如果無法正常運(yùn)行示例應(yīng)用戈毒,則可能與密鑰哈希有關(guān)。您可能會遇到以下情況:
顯示原生“登錄”對話框横堡,但在接受權(quán)限后埋市,您仍然處于退出狀態(tài)。同時命贴,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...”(..應(yīng)用的 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) { } ...
保存更改玷室,然后重新運(yùn)行示例代碼零蓉。檢查 Logcat 的消息輸出,應(yīng)與下圖相似:
12-20 10:47:37.747: D/KeyHash:(936):
478uEnKQV+fMQT8Dy4AKvHkYibo=
在開發(fā)者資料頁保存密鑰哈希穷缤。重新運(yùn)行示例敌蜂,驗(yàn)證是否可以成功登錄。