1

在Android应用中使用Facebook SDK时使用无效散列密钥错误的错误似乎相当普遍。我在这个Stackoverflow article中找到的解决方案非常完美。我在我的应用程序中以编程方式创建了散列键,并将该键粘贴到我的应用的Facebook开发者页面的界面中。Android w/Facebook SDK:突然出现密钥散列错误

尽管发现了这个和其他解决方案,但我无法找到一个很好的解释,为什么我突然得到这个错误。

  • 当我使用下面的命令密钥库,我仍然得到一个已经注册的我的Facebook开发者页面上并整齐地工作,到目前为止(所以现在我有2个注册哈希键)相同的散列键

    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 
    
  • 我没有改变开发环境,即PC开发我的应用程序。

  • 就在几个小时之前,我得到这个错误,我给应用程序一个新注册的测试仪,谁可以登录到我的应用程序完全正常

  • 我目前只开发和测试,所以应用程序尚未公开

  • 在模拟器中唱歌进出仍然正常工作。只有在我自己的手机上,我用于在物理设备上测试应用程序时,我在登出并想重新登录后突然出现此错误。

我只是想了解这是怎么回事就在这里,所以我知道什么期望,做些什么,一旦我公开这些应用程序。据我所知,有一个调试密钥和一个生产密钥。但即使新钥匙是生产钥匙,为何会发生这种情况?

为什么散列键 - 我使用keytool命令生成的命令和我在应用程序中生成的命令不同?

回答

1

这似乎是Facebook的一个漏洞。我在过去的24小时内一直在处理同样的问题。我尝试了一切,从创建一个新的Facebook应用程序,并使用新的Facebook ID和应用程序秘密(工作一分钟,然后我又开始收到相同的错误消息),删除设备上的应用程序,甚至更新Facebook SDK。

解决方案

我终于过去,它通过copying the keyhash I was getting in the error message and replacing it with the old one on the developer console

您可以直接从Android监视器中的debug选项卡复制它。

如果你不知道如何得到这个,从回调方法只要登录它:

 ... 
     @Override 
     public void onError(FacebookException error) { 
      Log.d(TAG, error.getMessage()); 
      // ... 
     } 
+1

Ojonugwa,谢谢!正如我所提到的,解决这个问题非常简单。只是我可以找到关于Why的任何可靠信息。 – Christian