Android Facebook SDK:上传谷歌播放时,按键哈希不匹配任何存储的密钥哈希值

我的应用程序使用Facebook API用户login。 在开发它工作正常,但是当我上传到谷歌播放停止工作。

这是错误日志:

12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): Exception during service 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): com.facebook.http.protocol.ApiException: Key hash XXXXXXX does not match any stored key hashes. 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:162) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponse.g(ApiResponse.java:239) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:272) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:29) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.java:56) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.java:29) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:280) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:141) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.java:103) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:196) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:374) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:151) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:18) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:367) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:260) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.java:299) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:53) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:230) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:59) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.Handler.handleCallback(Handler.java:733) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.Handler.dispatchMessage(Handler.java:95) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.Looper.loop(Looper.java:137) 12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at android.os.HandlerThread.run(HandlerThread.java:61) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): Failed to send 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:640) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:48) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation$2.run(BlueServiceOperation.java:605) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.os.Handler.handleCallback(Handler.java:733) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.os.Handler.dispatchMessage(Handler.java:95) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.os.Looper.loop(Looper.java:137) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at android.app.ActivityThread.main(ActivityThread.java:4998) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at java.lang.reflect.Method.invokeNative(Native Method) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at java.lang.reflect.Method.invoke(Method.java:515) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at dalvik.system.NativeStart.main(Native Method) 

难道是关键哈希以某种方式改变?

Solutions Collecting From Web of "Android Facebook SDK:上传谷歌播放时,按键哈希不匹配任何存储的密钥哈希值"

您是否按照Facebook提供的步骤创build了login应用程序?

您需要获得开始您的发行密钥库的“生产密钥”:

从命令行:

 keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 

并在facebook应用页面选项中添加此密钥。

更多信息: Facebook文档

我花了整整一天的时间,试图找出为什么这不工作…

在生成生成哈希密钥时,您需要在Windows上使用openssl-0.9.8e_X64.zip ,不能使用openssl-0.9.8k_X64.zip

版本产生不同的哈希键,出于某种原因9.8k不能正常工作… 9.8e

参考

这是给我错误的钥匙。

 keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 

解决方法适用于我:1.将此代码放入启动活动中

 private void printKeyHash(){ // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "YOUR_PACKAGE_NAME", 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) { Log.d("KeyHash:", e.toString()); } catch (NoSuchAlgorithmException e) { Log.d("KeyHash:", e.toString()); } } 
  1. 使用.keyStore将应用程序导出到Play商店进行发布
  2. 在上传之前安装应用程序,然后运行它并记下打印的keyHash。
  3. 将keyHash添加到Facebook应用程序。

希望这有助于某人。

您也可以从ApiException的堆栈跟踪中获取丢失的哈希值: Key hash XXXXXXX does not match any stored key hashes 。 你已经有了,最后只是遗漏了= 。 所以采取XXXXXXX =。

这对我来说工作得很好

 keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 

当您创build签名的应用程序时, <RELEASE_KEY_ALIAS>是您的别名。

在这里输入图像说明

<RELEASE_KEY_PATH>是在下面的图片位置然后input密码是在下面的图片,而不是android的 密钥创build密码

在这里输入图像说明

以上的解决scheme是正确的。 但如果有人仍然面临一个问题。 从开发人员configuration文件中删除密钥,并再次添加它写在最后,然后按回车。 您必须在设置和开发人员中添encryption钥。

我遇到了应用程序发布到谷歌播放和使用释放密钥的问题

请检查点号。 9 启用单一login为您的应用程序

启用单一login通过在下面将单一login设置为是,启用您的应用程序的单一login。 是没有单一login