[Android] Facebook 認証できないエラー : com.facebook.FacebookOperationCanceledException: remote_app_id does not match stored id
Android アプリ開発で、Facebook 認証できないというエラーが発生しました。
com.facebook.FacebookOperationCanceledException: remote_app_id does not match stored id
Facebook アプリの設定画面に登録している Key Hashes が間違っている場合、このようなエラーが発生するようです。
下記のコードを onCreate に記載して、key hash をログに出力して確認します。
try {
PackageInfo info = getPackageManager().getPackageInfo("com.example.packagename",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("YOURHASH KEY:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
key hash をコマンドラインで確認する方法もありますが、Windows用の OpenSSL を使わないといけないらしく、Mac用の OpenSSL だと正しい key hash が取得できないみたいです。
例えば、コマンドラインで keytool を使って debug.keystore の key hash を確認すると、 bvfSSDnrryuK8cbfekyHTs59l/A= です。
keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64
キーストアのパスワードを入力してください: android
bvfSSDnrryuK8cbfekyHTs59l/A=
しかし、冒頭の方法で、アプリ実行時のログから key hash を出力させると dkgthMwGADFQ7/9fkMn4MUzpSWo= であり、こちらが正しい値です。
ややこしい話ですが、解決方法が分かって良かったです。