このドキュメントでは、Android用Facebook SDKを使用して、AndroidアプリとFacebookの統合を開始する方法について説明します。Android用Facebook SDKの最新バージョンは12.0.0で、Android API 15が必要です。バージョンや機能について詳しくは、Android用Facebook SDKをご覧ください。
Facebook SDKを使用すると、イベントの自動記録を無効にしていない限り、アプリのイベントは自動的に記録され収集されます。収集される情報やイベントの自動記録を無効にする方法については、アプリイベントの自動記録をご覧ください。
次の方法で、アプリでのAndroid用Facebook SDKの使用を設定できます。
FacebookアプリIDを入手するには、アプリを設定してAndroid用Facebook SDKをインポートし、次のボタンをクリックして指示に従います。
Android用クイックスタートバージョン13.0.0以降、Android用Facebook SDKを使って作成した各アプリに、広告IDアクセス許可が自動で追加されるようになりました。詳しくは、広告ID - Play Consoleヘルプをご覧ください。
場合によっては、アプリに広告IDアクセス許可を含めたくないことがあります。例えば、子供やファミリー向けのアプリである場合、広告IDアクセス許可を利用しないかもしれません。アプリから広告IDアクセス許可を除外するには、本ドキュメントの後半にある指示に従ってください。
Android StudioプロジェクトでFacebook SDKを使うには、SDKをビルド依存関係として追加し、インポートします。
Android Studio | 新規プロジェクト | 最小SDKに移動します。
API 15: Android 4.0.3 (IceCreamSandwich)以上を選択して、新規プロジェクトを作成します。
Gradle Scripts | build.gradle (Project: <your_project>)
ファイルを開いて以下を追加します。
mavenCentral()
build.gradle (Project: <your_project>)
ファイルを保存して閉じます。
Gradle Scripts | build.gradle (Module: app)
ファイルを開いて、dependencies
セクションに以下を追加します。
implementation 'com.facebook.android:facebook-android-sdk:latest.release'
build.gradle (Module: app)
ファイルを保存して閉じます。
プロジェクトをビルドします。これで、アプリにcom.facebook.FacebookSdk
をインポートできるようになりました。
プロジェクトの文字列ファイルにアプリIDとクライアントトークンを追加し、マニフェストファイルを更新します。次のことを実行します。
アプリプロジェクトで/app/res/values/strings.xml
ファイルを開きます。
facebook_app_id
およびfacebook_client_token
という名前のstring
要素を追加し、値としてアプリIDとクライアントトークンを設定します。例えば、アプリIDが1234
、クライアントトークンが56789
の場合、コードは次のようになります。
<string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
アプリプロジェクトで/app/manifests/AndroidManifest.xml
ファイルを開きます。
application
要素に、アプリIDとクライアントトークンのmeta-data
要素を追加します。
<application android:label="@string/app_name" ...>
...
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
...
</application>
application
要素の後のマニフェストに、次のようにuses-permission
要素を追加します。
<uses-permission android:name="android.permission.INTERNET"/>
(任意)広告IDアクセス許可をオプトアウトするには、application
要素の後のマニフェストに、次のようにuses-permission
要素を追加します。
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
プロジェクトをビルドします。
アプリからリンク、画像、動画をシェアするには、マニフェストでFacebookContentProvider
権限を宣言します。次のことを実行します。
アプリプロジェクトで/app/manifests/AndroidManifest.xml
ファイルを開きます。
FacebookContentProvider
権限のマニフェストにprovider
要素を追加します。アプリIDをauthorities
値の末尾に追加します。例えば、アプリIDが1234
の場合、宣言は次のようになります。
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
プロジェクトをビルドします。
Android用Facebook SDKには、次のサンプルが含まれています。
Android StudioプロジェクトにFacebook SDKをインポートすれば、これらのサンプルを試せます。これらのサンプルは、Maven CentralやJCenterを介した中央リポジトリ依存関係ではなく、プロジェクト依存関係を持ちます。これは、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
)Java SDKフォルダ内のコマンドプロンプトで次のコマンドを実行します。これにより、28文字の文字列が生成されます。
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Facebook Developerサイトに移動します。Facebookにログインし、右上のドロップダウンメニューを使って開発者設定に移動します。
開発者設定でメニューからサンプルアプリを選び、プロフィールにキーハッシュを追加して保存します。
複数のマシンで開発を行っている場合は、複数のキーハッシュを追加できます。
これで、Facebookログインを使うサンプルも含め、すべてのサンプルをコンパイルして実行できるようになります。
Facebookは、アプリとFacebookアプリとの間のやり取りを、キーハッシュを使って認証します。Facebookログインを使うアプリを実行する場合、Facebook開発者プロフィールにAndroid開発用キーハッシュを追加する必要があります。
開発者が自分に対してリリースしたアプリのバージョンについては、リリースキーハッシュも生成して設定する必要があります。
OS X、Windowsのいずれの環境でも、キーハッシュを生成して入手するか、Settings.getApplicationSignature(Context)
から返された値を使って入手することができます。手順については、サンプルアプリを実行するをご覧ください。
アプリとFacebookとの間の情報のやり取りを認証するには、リリースキーハッシュを生成して、FacebookアプリID内のAndroid設定に追加する必要があります。これを行わないと、アプリをストアにリリースした際に、Facebook統合が正しく機能しない可能性があります。
前のステップで、開発環境用のキーハッシュを使ってFacebook開発者設定を更新しているはずです。
アプリの公開時はたいてい、開発環境とは別の署名が付けられます。そのため、必ずリリースキーハッシュを作成して、FacebookアプリIDのAndroid設定に追加してください。
リリースキーのハッシュを生成するには、MacまたはWindowsで、次のコマンドを(リリースキーのエイリアスとキーストアのパスを置き換えて)実行します。
Mac OSの場合は、以下を実行します。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
Windowsの場合は、以下が必要です。
keytool
)Java SDKフォルダ内のコマンドプロンプトで次のコマンドを実行します。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
必ず、最初にリリースキーを作成したときに設定したパスワードを使用してください。
このコマンドにより、28文字の文字列が生成されます。このリリースキーハッシュをコピーし、FacebookアプリIDのAndroid設定に貼り付けます。
また、FacebookアプリIDのAndroid設定にも、Androidパッケージの正しいパッケージ名と、メインアクティビティクラスが含まれていることを確認します。
Android用Facebook SDKの入手可能な最新バージョンでは、Mavenの依存関係を宣言できます。
<dependency> <groupId>com.facebook.android</groupId> <artifactId>facebook-android-sdk</artifactId> <version>PUT_LATEST_VERSION_HERE</version> </dependency>
サンプルアプリの実行時に問題が生じる場合、その問題はキーハッシュに関連している可能性があります。次のようなシナリオが考えられます。
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
正しいキーハッシュを使用していることを確認してください。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=
キーハッシュを自分の開発者プロフィールに保存します。サンプルをもう一度実行し、正常にログインできることを確認します。