21
22

More than 5 years have passed since last update.

Facebook SDK for Androidでログインが失敗するときの対応

Last updated at Posted at 2014-05-14

アプリにFacebookのログイン機能をつけるとき、Facebook SDKでのログインがうまくできない時の対応方法です。

状況:

1.ターミナルより、以下のコマンドでHash keyを取得して、FB developerサイト->設定画面にkeyを登録している

keytool -exportcert -alias androiddebugkey -keystore "debug.keystoreまでのパス" | openssl sha1 -binary | openssl base64

※"debug.keystoreまでのパス"には、例えば以下のような値が入ります
~/.android/debug.keystore

2.アプリでのログイン時に以下の症状のいずれかがでる
* ログインボタンを押した後にパーミッションを求められ、OKをしたのに元の画面に戻る

  • 以下のようなメッセージがログにでる
    'com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored'
    '..App is Misconfigured for facebook login...''.

3.アプリがパブリックに公開されていることを確認している
FB developer -> Status & Reviewから”Do you want to make this app and all its live features available to the general public?”がYESになっていることを確認する。

アプリがパブリックに公開されていない場合:
Contact Emailを設定することで、public公開が有効になります
SettingsでContact Emailを設定
App detailsでUser Support Emailを設定

対策:

アプリケーションのハッシュキーはFB developerに登録する必要がありますが、ターミナルからハッシュキーを取得すると、うまく取得できないケースがあるようです。

ですので、アプリケーションから直接hash keyを取得します。

  • LoginするときのアクティビティのonCreate()に以下を追加します。
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    "com.facebook.samples.loginhowto", 
                    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) {

        }
        //その他の処理
}
  • ログに"KeyHash: XXXXXXXXXXX"が表示されるので、その値をFB developerサイトのキーハッシュに登録します。

参考:

Facebook developerのトラブルシューティングにも記載があります。
http://stackoverflow.com/questions/5306009/facebook-android-generate-key-hash
https://developers.facebook.com/docs/android/getting-started/

21
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
22