8

私のアプリケーションでは、ユーザーは Facebook 経由でログインする必要がありますが、このエラーが発生しています。

**my logcat error:**

02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988): Exception during service
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id 
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.protocol.base.ApiResponseChecker.b(ApiResponseChecker.java:74)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.protocol.base.ApiResponseChecker.a(ApiResponseChecker.java:103)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.protocol.base.ApiResponse.g(ApiResponse.java:208)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:267)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:28)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.protocol.base.SingleMethodRunner.a(SingleMethodRunner.java:125)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:274)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:175)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.server.OrcaServiceQueue.d(OrcaServiceQueue.java:218)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.server.OrcaServiceQueue.d(OrcaServiceQueue.java:38)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at com.facebook.orca.server.OrcaServiceQueue$3.run(OrcaServiceQueue.java:169)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at android.os.Handler.handleCallback(Handler.java:587)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at android.os.Looper.loop(Looper.java:123)
02-14 18:00:01.821: WARN/fb4a:fb:OrcaServiceQueue(10988):     at android.os.HandlerThread.run(HandlerThread.java:60)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988): Failed to send
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988): com.facebook.orca.ops.ServiceException: API_ERROR: API_ERROR
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at com.facebook.orca.ops.OrcaServiceOperation.c(OrcaServiceOperation.java:610)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at com.facebook.orca.ops.OrcaServiceOperation.c(OrcaServiceOperation.java:40)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at com.facebook.orca.ops.OrcaServiceOperation$2.run(OrcaServiceOperation.java:575)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at android.os.Handler.handleCallback(Handler.java:587)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at android.os.Looper.loop(Looper.java:123)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at android.app.ActivityThread.main(ActivityThread.java:3687)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at java.lang.reflect.Method.invokeNative(Native Method)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at java.lang.reflect.Method.invoke(Method.java:507)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-14 18:00:01.876: WARN/fb4a:fb:GDPDialog(10988):     at dalvik.system.NativeStart.main(Native Method)

私はこのようなハッシュキーを作成しています、

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\rama\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

キーを取得し、facebook の設定に追加しました。

これについて良いアイデアを教えてください。

ありがとう。

4

1 に答える 1

33

アプリケーションのメイン アクティビティの onCreate() で、このコードを入力してアプリを実行します。

これにより、Facebook が必要とする正しいキー ハッシュが得られます。どうやら、JRE 1.7 は時折それを行います。

logcat トレースに表示される結果をコピーして、アプリの Facebook コンソールに貼り付ければ、準備完了です。

try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "ENTER.YOUR.PACKAGE.NAME", 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) {

編集:ほとんど忘れていました。をアプリのパッケージ名に置き換えることを忘れないでください。ENTER.YOUR.PACKAGE.NAME;-)

アップデート:

解決策 1:

このリンクを試してください: http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1。ハッシュ キーを取得する Facebook の方法を使用しても、必ずしも宣伝どおりに機能するとは限らないことがわかりました。ただし、このリンクにはハッシュキーを取得する別の方法があり、ほとんど常に機能しています。

解決策 2:

そうは言っても、私がいつも最も簡単にできることは、Facebook SDK にあなたのハッシュキーが何であるかを教えてもらうことでした。これははるかに簡単で、数分以上かかることはありません。

ステップ 1: Facebook SDK で、Util.javaクラスを見つけます。その中で、これを変更します:

private static boolean ENABLE_LOG = false;

に:

private static boolean ENABLE_LOG = true;

ステップ 2:新しい署名付き APK を作成し、デバイスに転送してインストールします。すでにインストールされている場合は、当然、プロンプトが表示されます。

ステップ 3: DDMS (Logcat) が実行され、デバイスがコンピューターに接続されている状態で、アプリケーションを実行し、キーの不一致の警告を探し続けます。その警告には、実際のハッシュ キーがあります。そのキーをコピーし、Facebook 開発者ページに移動して、新しいキーをリストに追加します。

于 2013-02-14T12:44:43.010 に答える