Android SDKスタートガイド

Android用Facebook SDKを使用すると、自分のAndroidアプリをFacebookに簡単に統合できます。次の機能を利用できます。

  • Facebook Analytics - 利用者がどのように製品を利用しているのか把握できます。
  • Facebookログイン - Facebookの認証情報で利用者を認証します。
  • Account Kit - 利用者が携帯番号またはメールアドレスだけでログインできます。
  • シェアと送信のダイアログ - アプリ内のコンテンツをFacebookにシェアできるようにします。
  • App Events - アプリケーションのイベントをログ記録します。
  • グラフAPI - グラフAPIの読み取りと書き込みを行います。

アプリでFacebook SDKを使用するようにセットアップするには、次の2種類の方法があります。

  • クイックスタートを使用する。
  • Facebook SDKでプロジェクトをセットアップする。

クイックスタート

FacebookアプリIDの取得、アプリの設定、Facebook SDKのインポートを行うには、以下のボタンをクリックして、オンラインで表示される説明にしたがってください。

Android用クイックスタート

 

関連ガイド:

Android Studioのセットアップ

プロジェクトでFacebook SDKを使用するには、ビルド依存性として追加し、インポートします。

1. [Android Studio] | [New Project] | [Minimum SDK]に移動します。

2.[API 15: Android 4.0.3] (またはそれ以降)を選択し、新しいプロジェクトを作成します。

3.新しいプロジェクトを作成したら、your_app | build.gradleを開きます。

4.以下をbuild.gradle (Project)ファイルのbuildscript { repositories {}}セクションに追加します。

mavenCentral() 

5. 以下をbuild.gradle (module: app)ファイルのdependencies {}セクションに追加し、Facebook SDKの最新バージョンをコンパイルします。

implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

Facebook SDKを使用する際は、イベントの自動記録を無効にしていない限り、アプリでいくつかのイベントが自動的にFacebook Analytics用に記録、収集されます。収集される情報やイベントの自動記録を無効にする方法については、アプリイベントの自動記録に関するページをご覧ください。

6. プロジェクトをビルドします。これで、com.facebook.FacebookSdkをアプリにインポートできるようになります。

FacebookアプリIDを追加する

次にFacebookアプリIDをプロジェクトの文字列ファイルに追加し、Androidマニフェストを更新します。

1.strings.xmlファイルを開きます。パスの例: /app/src/main/res/values/strings.xml

2.名前がfacebook_app_idで、値がFacebookアプリIDの新しい文字列を追加します。

3.AndroidManifest.xmlを開きます。

4.マニフェストにuses-permission要素を追加します。

<uses-permission android:name="android.permission.INTERNET"/>

5. meta-data要素をapplication要素に追加します。

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>

画像と動画の送信

リンク、画像、動画をAndroid用Facebookアプリ経由でシェアする場合は、さらにマニフェストでFacebookContentProviderを宣言する必要があります。

アプリIDをauthorities値の末尾に追加します。たとえば、FacebookアプリIDが1234の場合、宣言は次のようになります。

<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />

ProGuardでのSDKの利用

Facebook Android SDKにProGuardを使用するために追加のステップを実行する必要はありません。Proguardの手順については、Android開発者向けサイトの「Shrink Your Code and Resources (コードとリソースを圧縮する)」をご覧ください。

サンプルアプリの実行

SDKには次のサンプルが付属しています。

  • HelloFacebookSample - プロフィールへのアクセス、近況アップデート、写真のアップロードを表示します。
  • RPSSample - ネイティブのシェアダイアログ、Open Graphの公開、選択ツール、招待、ディープリンクを使用します。
  • Scrumptious - ログイン、リクエスト、選択ツール、写真のアップロード、Open Graphの公開を使用します。

サンプルを利用するには、SDKをAndroid Studioプロジェクトにインポートします。

サンプルには、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の場合、次のものが必要です。

コマンドプロンプトで、Java SDKフォルダで次のコマンドを実行します。

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

これで、28文字の文字列が生成されます。

Facebook開発者用サイトに移動します。右上のドロップダウンメニューを使用してFacebookにログインし、[開発者設定]に移動します。

開発者設定でメニューから[Sample App]を選択し、プロフィールにキーハッシュを追加して保存します。

複数のマシンで開発する場合は、複数のキーハッシュを追加できます。

これですべてのサンプル(Facebookログインを使用するものも含む)をコンパイルして実行できるようになりました。

開発キーハッシュを作成する

Facebookでは、アプリとFacebookアプリ間のやり取りの認証にキーハッシュを使用します。アプリでFacebookログインを使用する場合は、Android開発キーハッシュを自分のFacebook開発者プロフィールに追加する必要があります。

リリースするバージョンのアプリにも、リリースキーハッシュを生成して設定する必要があります。

OS XまたはWindowsのいずれかで、キーハッシュを生成するか、Settings.getApplicationSignature(Context)から返される値を使用して、キーハッシュを取得できます。手順については、「サンプルアプリの実行」をご覧ください。


次のステップ

Android用Facebook SDKをインストールしてFacebookアプリIDを構成したら、以下を見ることができます。


リリースキーハッシュの設定

アプリと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の場合、次のものが必要です。

コマンドプロンプトで、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パッケージの正しいパッケージ名とメインアクティビティクラスが含まれていることも確認します。


MavenでのFacebook SDKの利用

Mavenの依存性は、Android SDKの最新バージョンを使用して宣言できます。

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

サンプルアプリのトラブルシューティングを行う

サンプルアプリの実行で問題が発生した場合は、キーハッシュが原因となっている場合があります。次のいずれかのシナリオを確認します。

  • ネイティブのログインダイアログが表示されるが、アクセス許可に同意しても、ログアウト状態のままとなっている。さらに、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... (...アプリの設定が誤っているため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) {
        
    }
    
    ...

変更を保存し、サンプルを再実行します。logcatの出力に次のようなメッセージがないかを確認します。

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

開発者プロフィールにキーハッシュを保存します。サンプルを再実行し、正しくログインできることを確認します。