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

常見問題

針對 Android 11,可新增下列 queries 區塊至專案的 AndroidMainfest.xml 以解決此問題:

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

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

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

如需深層連結的多重應用程式支援,請參閱 [應用程式連結](/docs/applinks)。

您可以在自己的「strings.xml」檔案中提供所需地區的翻譯,覆寫 Facebook Android SDK 中的字串。

「facebook/res/values/」目錄中的「strings.xml」檔案包含了 SDK 使用的所有字串。字串資源的名稱應要簡單明瞭。

如需詳細資訊,請參閱 [Android 開發人員指南:透過資源進行本地化](http://developer.android.com/guide/topics/resources/localization.html)。

您可以前往 [SDK 下載](/docs/android/downloads)下載舊版 SDK。

每個具備原生「分享」對話方塊的 Facebook Android SDK 版本也都含有一個 Facebook 應用程式 APK。

到 3.14.1 版為止,此 APK 一直包含在 SDK 下載中。之後的版本則需另行下載。您可以在 [下載頁面](/docs/android/downloads)找到這些 APK。

只需在 Android 模擬器或裝置上安裝 Facebook APK,即可透過應用程式測試原生「分享」對話方塊。

Android 程式庫通常會使用「BuildConfig.DEBUG」來判斷應用程式是否處於偵錯模式。不過,由於 [Gradle 中的錯誤](https://code.google.com/p/android/issues/detail?id=52962),Android 程式庫總是會在建置時將「DEBUG」設為 false。為了暫時解決這個問題,您可以使用「FacebookSdk.setIsDebugEnabled(boolean)」方法,從應用程式直接設定偵錯模式。這樣便能從 SDK 啟用偵錯記錄。

您也可以使用「FacebookSdk.addLoggingBehavior(LogginBehavior)」設定記錄行為,以啟用各種類別的訊息記錄。請參閱 [「Android SDK 參考資料」中的「LoggingBehavior」](/docs/reference/android/current/class/LoggingBehavior/)。

「分享」對話方塊會在用戶動作後回呼「onSuccess」和「onCancel」。

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

疑難排解

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

  • 「連線階段:嘗試要求新權限,但連線階段仍有待處理要求」或
  • 「嘗試授權,但仍有待處理要求」

以上錯誤訊息表示您的應用程式在既有要求尚未完成前,就企圖要求授與新權限。所有為取得權限所提出的要求皆為非同步處理,而且在既有要求完成前,您無法要求新權限。

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

如果紀錄中沒有錯誤,很可能是因為從未執行過該要求。若要執行「GraphRequest」,請呼叫「executeAsync」方法。

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

這是一個密鑰雜湊,也就是登入您應用程式所用密鑰的 SHA-1 雜湊。一般而言至少會使用兩個不同的密鑰:一個用於開發和偵錯,一個用於發行。確認應用程式的「設定」頁面已加入這兩個值。

如需詳細資訊,請參閱 [「Android SDK 新手指南」中的「建立開發密鑰雜湊」](/docs/android/getting-started#create_hash)。

最常見的原因是您未在「AndroidManifest.xml」中設定「ContentProvider」。請務必在「AndroidManifest.xml」檔案中加入該項目,並使用您的應用程式編號。請參閱 [在 Android 上分享 - 必要條件](/docs/sharing/android#prereqs)。