Facebook Android SDK 常見問題和解決疑難

常見問題

對於 Android 11,您可以為專案的 AndroidMainfest.xml 加入以下 queries 區塊來解決此問題:

<manifest package="com.example.app"> <queries> <provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> </queries> ... </manifest>

您可在多個 Android 應用程式中使用同一個 Facebook 應用程式編號。也就是說,在其他應用程式中進行登入、分享等時,只需使用相同的應用程式編號。

對於深層連結及透過通知和其他方式開啟應用程式而言,僅支援單一套件名稱/類別名稱組合。

如需深層連結的多重應用程式支援,請參閱應用程式連結

您可在自己的「strings.xml」檔案中提供目標本地語言的翻譯,以覆寫 Android 專用 Facebook SDK 中的字串。

「facebook/res/values/」目錄中的「strings.xml」檔案包含了 SDK 使用的所有字串。字串資源的名稱應可望文生義。

如需詳細資訊,請參閱 Android 開發人員指南:透過資源進行本地化

您可以在 SDK 下載 中下載舊版的 SDK。

每一個包含原生分享對話框的 Facebook Android SDK 版本也都包括一個 Facebook 應用程式 APK。

到 3.14.1 版為止,此 APK 一直包含在 SDK 下載中。之後的版本則需個別下載。您可在下載頁面 中找到這些 APK。

只需在 Android 模擬器或裝置上安裝 Facebook APK,即可從應用程式測試原生分享對話框。

Android 程式庫通常會使用「BuildConfig.DEBUG」來判斷應用程式是否處於除錯模式。不過,由於 Gradle 中的錯誤,Android 程式庫總是將「DEBUG」預設為「false」。為了解決這個問題,您可使用「FacebookSdk.setIsDebugEnabled(boolean)」方法,從應用程式直接設定除錯模式。這樣會從 SDK 啟用除錯記錄。

您也可使用「FacebookSdk.addLoggingBehavior(LogginBehavior)」設定記錄行為,以啟用不同類別的訊息記錄。請參閱 Android SDK 參考資料:記錄行為 以瞭解詳情。

用戶執行動作後,分享對話框會在「onSuccess」和「onCancel」中發送回傳。

  • 用戶成功分享時會回傳「onSuccess」。此外,若用戶授與應用程式「publish_actions」權限,「Sharer.Result」類別中就會有一個「postId」。如果該用戶未透過「Facebook 登入」登入,當用戶點擊取消時,也會調用此方法。
  • 當用戶點擊分享對話框的「X」按鈕時,或用戶已透過「Facebook 登入」登入並點擊取消時,都會回傳「onCancel」。

解決疑難

當您要求發佈權限時,可能會發生下列錯誤:

  • 「連線階段:嘗試為仍有待處理要求的連線階段要求新權限」或
  • 「嘗試在仍有待處理要求的情況下授權」

這個錯誤訊息表示您的應用程式在先前的要求尚未完成處理之前,就已經開始要求新的權限了。所有權限要求皆為非同步處理,而且在先前要求完成處理前,您無法要求新權限。

請參閱 SDK 中提供的應用程式範例(如 Scrumptious 或 Hello Facebook),瞭解如何以多個步驟要求新權限。

若紀錄中有錯誤,很可能是因為要求從未執行。若要執行「GraphRequest」,請調用「executeAsync」方法。

若要登入或使用原生分享對話框,您必須告知 Facebook 登入您應用程式所需的密鑰。

這是一個密鑰雜湊,亦即登入您應用程式所用密鑰的 SHA-1 雜湊。一般而言至少會使用兩個不同的密鑰:一個用於開發和除錯,另一個用於發行。請確保這兩個數值都已加入您的應用程式設定頁面。

如需詳細資訊,請參閱 Android SDK 新手指南:建立開發密鑰雜湊

最常見的原因是您未在「AndroidManifest.xml」中設定「ContentProvider」。請務必將該項目連同您的應用程式編號一起加入「AndroidManifest.xml」檔案。請參考在 Android 分享:必要條件