web-dev-qa-db-ja.com

Android Facebook SDK 3.0は、ログイン中に「remote_app_idが保存済みIDと一致しません」と表示します

Android 3.0。のFacebook SDKを使用するアプリを作成しようとしています。

Session.openActiveSession

CLOSED_LOGIN_FAILEDのSessionStateを提供するだけで、LogCatは次のとおりです。

12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id 

StackOverflowを「remote_app_id」で検索しましたが、結果はiOSの「バンドルID」ですが、Androidの「remote_app_id」の意味がわかりません。 Facebookアプリの設定でパッケージ名とアクティビティ名を既に設定しています。エラーの理由がわかりません。

43
David Fang

この質問を解決しました。問題は、「keytool」を使用して生成した「Key Hash」が間違っていたことです。 「keytool」がパスワードの入力を求めるとき、「Android」を使用する必要があります(引用符なし)。代わりに自分のパスワードを使用していました。パスワードを変更すると、問題はすぐに解消されました。お役に立てれば。

34
David Fang

もう1つの考えられるエラー(私に起こった)は、Facebookアプリコンソールで「キーハッシュ」を設定し、別のキーストアを使用してAndroidアプリに署名する)です。

残念ながら、これは Facebook入門チュートリアル がこのエラーを引き起こすためです。 Android開発者はデフォルトのAndroidデバッグキーを例で使用する必要があり、キーハッシュは同じキーストアで生成する必要があることを説明していませんアプリケーションに署名します。

私の推奨事項は、Facebookコンソールで2つのキーハッシュを設定することです。

  1. デフォルトAndroidデバッグキー:

keytool -exportcert -alias androiddebugkey -keystore〜/ .Android/debug.keystore | openssl sha1-バイナリ| openssl base64

  1. アプリケーションリリースキー:

keytool -exportcert -alias yourappreleasekeyalias -keystore〜/ .your/path/release.keystore | openssl sha1-バイナリ| openssl base64

要確認:SDKツールによって生成されたデバッグキーで署名されたアプリケーションを公開することはできません。そのため、最初の前のコマンドラインを使用して生成されたハッシュキーのみを使用してアプリを公開することはできません(facebookのチュートリアルが示唆しているように)。

アプリケーションへの署名の詳細については、 アプリケーションへの署名 をご覧ください。

77
JPMagalhaes

別のオプションは、Facebookに送信されたキーハッシュを印刷し、その値を使用することです。

メインアクティビティのonCreate()メソッドに以下の変更を加えます。

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) {
}

置換com.facebook.samples.loginhowto with your own package name

これは私のために働いた!

61
TacoEater

間違ったハッシュキーを生成した間違ったopensslに閉じ込められました。 http://gnuwin32.sourceforge.net/packages/openssl.htm からopensslを使用して、問題を解決しました。

5
user1892751

私も同じ問題を抱えていました。opensslが間違ったsha1を作成していたことがわかりました。新しいものをダウンロードし、それは魅力のように働いた。

4
TacoEater

デバッグキーを使用してハッシュキーを取得しています...パッケージに署名せず、アプリをデバッグモードで実行していない場合は、機能する可能性があります。あなたがする必要があるのは:

1)マニフェストファイルに移動し、Android:debuggable = "true"アプリケーションに追加します。

2)アプリを実行して、logcatを監視します。

3)x9SLcMXBlgly1f36PJuuc4a3YAcと一致するキーとなる新しいキーが印刷されます。これで、最後に=記号が追加されました。

4)facbook開発者サイトでこのキーを登録します

代替トリック

他の1つのことを行うことができます。このキーをFacebook開発者サイトx9SLcMXBlgly1f36PJuuc4a3YAc =に登録するだけです。

Facebookアプリで表示されているキーに=を追加するだけです。

できました!!これがうまくいくことを願っています。

0
MrDumb

また、facebook開発者ポータルの正しい場所にハッシュを入力してください。アプリケーションの設定を編集して、ネイティブAndroid App。

代わりに「サンプルアプリの設定」に誤ってハッシュを入れていました。

0
zyked