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

时间:2013-10-24 21:14:58

标签: android facebook facebook-graph-api hash

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

UnknownError: ApiException:Key hash BGyx5d0rMOuY9aQqZK4B9q04+no does not match any stored key hashes

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

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

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

详细信息:

  • java 7 release 25
  • win 8 64bit
  • ADT(eclipse)

1 个答案:

答案 0 :(得分:1)

this指南的问题排查部分,将其添加到您的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) {

        }

添加按原样显示的keyHash。它与错误日志中的错误日志非常相似,但与/& - 已更换