Facebook Android SDKのよくある質問とトラブルシューティング

よくある質問

Android 11では、次のqueriesブロックをプロジェクトのAndroidMainfest.xmlに追加すると、問題を解決できます。

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

1つのFacebookアプリIDを複数のAndroidアプリで使用できます。1つのアプリIDを別のアプリのログインやシェアなどにも使用できます。

お知らせなどの方法でディープリンクやアプリを開く場合、1つのパッケージ名/クラス名の組み合わせしか使用できません。

ディープリンクに複数のアプリを使用する場合は、「App Links」をご覧ください。

独自のstrings.xmlファイルに必要なロケールの翻訳を入力することによって、Android用Facebook SDKの文字列を上書きできます。

facebook/res/values/ディレクトリのstrings.xmlファイルには、SDKが使用するすべての文字列が含まれます。文字列のリソースの名前には分かりやすい名前を指定します。

詳細については、「Android Developer's Guide (Android開発者ガイド)」の「Localizing with Resources (リソースを使用したローカライズ)」をご覧ください。

SDKの以前のバージョンは、SDKダウンロードからダウンロードできます。

ネイティブのシェアダイアログが付属するAndroid用Facebook SDKの各リリースには、Facebookアプリ用のAPKも含まれています。

リリース3.14.1までは、このAPKはSDKダウンロードに含まれていました。今後は、別々にダウンロードすることになります。APKはFacebookのダウンロードページからダウンロードできます。

AndroidエミュレーターやデバイスにFacebook APKをインストールすれば、アプリからネイティブのシェアダイアログをテストできます。

通常、AndroidライブラリはBuildConfig.DEBUGを使用して、アプリがデバッグモードにあるかどうかを判断します。ただし、Gradleのバグにより、Androidライブラリが構築されるときは、DEBUGが常にfalseに設定されます。回避策として、FacebookSdk.setIsDebugEnabled(boolean)メソッドがあります。このメソッドにより、アプリから直接デバッグモードを設定できます。これにより、SDKからのデバッグのログ記録が有効になります。

また、FacebookSdk.addLoggingBehavior(LogginBehavior)を使用してログ記録の動作を設定することによって、さまざまなカテゴリのメッセージのログ記録を有効にできます。詳細については、「Android SDKリファレンス」の「LoggingBehavior」をご覧ください。

利用者のアクションの際には、シェアダイアログによってonSuccessonCancelにコールバックが行われます。

  • 利用者が正常にシェアできた場合はonSuccess。さらに、利用者がアプリにpublish_actionsアクセス許可を付与すると、Sharer.ResultクラスにpostIdが追加されます。利用者がFacebookログインでログインしていない場合、利用者が[キャンセル]をクリックしたときにも、このメソッドが呼び出されます。 利用者がシェアダイアログの[X]ボタンをクリックした場合はonCancel。利用者がFacebookログインでログインしており、[キャンセル]をクリックしたときにも呼び出されます。

トラブルシューティング

公開のアクセス許可をリクエストすると、次のエラーが表示されることがあります。

  • 「セッション: 承認待ちのリクエストを持つセッションに新しいアクセス許可をリクエストしようとしました」または
  • 「リクエストの承認待ち中に、認証を実行しようとしました」

このエラーメッセージは、前のリクエストが完了する前にアプリが新しいアクセス許可のリクエストを試みていることを表しています。アクセス許可のリクエストはすべて非同期で行われます。前のリクエストが完了するまでは、新しいアクセス許可をリクエストできません。

複数のステップで新しいアクセス許可を要求する方法については、ScrumptiousやHello FacebookなどのSDKで提供されているサンプルアプリをご覧ください。

ログにエラーがない場合は、リクエストが実行されていない可能性があります。GraphRequestを実行するには、executeAsyncメソッドを呼び出します。

ネイティブのシェアダイアログにログインしたり、使用するには、アプリの署名に使用するキーをFacebookに設定します。

これは、アプリの署名に使用するキーのSHA-1ハッシュです。通常は、少なくとも2つの異なるキーが使用されます。開発およびデバッグ用のキーと、リリース用のキーです。アプリの設定ページには必ず両方の値が追加されていることを確認してください。

詳細については、「Android SDKスタートガイド」の「開発キーハッシュを作成する」をご覧ください。

ほとんどの場合、AndroidManifest.xmlContentProviderが設定されていないことが原因です。AndroidManifest.xmlファイルにアプリIDとともに追加されていることを確認してください。詳細については、「Androidでのシェア」の「前提条件」をご覧ください。