Android Facebook remote_app_id与存储的ID错误不匹配

在我的应用程序用户必须通过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设置。

给我一些好主意,

谢谢。

在应用程序的主Activity中,在onCreate()中,输入此代码并运行应用程序。

这将为您提供Facebook所需的正确Key Hash。 显然,JRE 1.7偶尔会这样做。

复制将在logcat跟踪中显示的结果并粘贴到App的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告诉你你的Hash Key是什么 。 这是更简单的,不应该超过几分钟。

步骤1:在您的Facebook SDK中,findUtil.java类。 在那,改变这个:

 private static boolean ENABLE_LOG = false; 

至:

 private static boolean ENABLE_LOG = true; 

第2步:创建一个新的签名APK,转移到您的设备并安装。 如果它已经安装,自然会提示。

步骤3:运行DDMS(Logcat)并将设备连接到计算机,运行应用程序并继续查找密钥不匹配警告。 该警告具有实际的 Hash密钥。 复制该密钥,转到您的Facebook Developer页面并将新密钥添加到列表中。