私は間違いを犯していないことを確認するために、Android用の基本的なHello World facebookアプリのdeveloper.facebook.comのチュートリアルを数え切れないほど経験しましたが、「remote_app_idが保存されたIDと一致しません」というエラーが表示されますが、一致しているかどうかはわかりませんそのエラーがスローされる理由。また、サンプルを実行すると、バインダー トランザクションが失敗します。今奇妙なのは、電話でfbアプリをアンインストールし、ユーザーにfacebookにサインインするように強制すると、基本的なhello worldアプリが機能することです。私は何か間違ったことをしていますか、それともこれは Facebook SDK の問題ですか? すでにすべてをダウンロードして再インストールしましたが、それでも同じ問題が発生します
3 に答える
試す
try {
PackageInfo info = getPackageManager().getPackageInfo("com.eatapp", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
メインのアクティビティで:-)これは、Android SDK 3.0で機能する唯一のソリューションです
別の考えられるエラー (私に起こった) は、Facebook アプリ コンソールで「キー ハッシュ」を設定し、別のキーストアを使用して Android アプリに署名することです。
残念ながら、これはFacebook Getting Started Tutorialがこのエラーを引き起こすために発生します。Android開発者は例でデフォルトのAndroidデバッグキーを使用する必要があると述べており、アプリケーションに署名するのと同じキーストアでキーハッシュを生成する必要があることを説明していません。
Facebook コンソールで 2 つのキー ハッシュを設定することをお勧めします。
- デフォルトの Android デバッグ キー:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -バイナリ | openssl base64
- アプリケーションのリリース キー:
keytool -exportcert -alias yourappreleasekeyalias -keystore ~/.your/path/release.keystore | openssl sha1 -バイナリ | openssl base64
注意: SDK ツールによって生成されたデバッグ キーで署名されたアプリケーションを公開することはできません。そのため、前の最初のコマンド ラインを使用して生成されたハッシュ キーのみを使用してアプリを公開することはできません (Facebook のチュートリアルで示唆されているように.
アプリケーションへの署名の詳細については、Signing Your Applicationを参照してください。
解決しました。
ハッシュ値が間違っていました。これは、Windows の問題または人的障害のようです。私が使用した:
"keytool.exe の場所" -exportcert -alias alias -keystore "キーストアの場所" | 「openssl.exe の場所」sha1 -binary | 「openssl.exe の場所」base64
間違ったハッシュ値を取得しました。とにかく、この投稿を見つけました
http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/
キー生成アプリケーションをダウンロードして実行し、logcat からハッシュ値を取得しました。これはデバッグ キーには最適ですが、プログラムをいつ公開するかは不明です
お役に立てれば