UnknownError:ApiException:Key hash****不匹配...当我安装了FB app时

sam*_*ski 7 hash android facebook facebook-graph-api

我会先注意到我对java和android开发很新,可能会错过一些简单的东西.我通过Facebook示例"sessionlogin".它没有Facebook应用程序.当我安装Facebook应用程序并尝试运行代码时,它会因错误而失败

UnknownError: ApiException:Key hash BGyx5d0rMOuY9aQqZK4B9q04+no does not match any stored key hashes
Run Code Online (Sandbox Code Playgroud)

我得出的第一件事是显而易见的是键不匹配,但为什么呢?我很困惑为什么应用程序没有工作,以及散列键与FB应用程序的区别是什么?它是否使用我的应用程序密钥?FB应用程序是否需要已签名的应用程序才能访问其数据?

至于我所做的一些事情,我添加了一段代码来在应用程序的开头输出哈希键.在所有情况下,都显示了BGyx5d0rMOuY9aQqZK4B9q04 + no =.应用程序停留在调试模式,因此我按照此解决方案中的说明签署并发布了应用程序.作为回报,我使用的哈希是egNzXZN1fDDeK7PNL + QzHDAKUsg =(在FB上,从控制台cmd ln返回)但是当应用程序实际运行时,片段返回BW0xQ5kipPoWYWWJd1g3yaKCe6M =.

在阅读了几十篇文章并完成了大约一半的文章之后,我已经失去了很多时间来学习我做错了什么,现在我完全无能为力.怎么能得到一个有效的例子?我错过了一些基本配置吗?

细节:

  • java 7发布25
  • 赢8比64比特
  • ADT(日食)

kak*_*oma 1

从本指南的故障排除部分,将其添加到您的 onCreate 中:

try {
            PackageInfo info = context.getPackageManager().getPackageInfo(
                    "com.mypackage.name", 
                    PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.e("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                }
        } catch (NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
Run Code Online (Sandbox Code Playgroud)

添加如图所示的 keyHash。它将与错误日志中的非常相似,但用 / & - 替换