Android Facebook集成无效密钥哈希

在我的一个应用程序中,我需要获取Facebook的数据……我这样做:

我创建了应用ID.它成功登录,但在注销后,我登录,然后它给了我:

我在做什么错了?请建议我使用Facebook SDK …我已经在手机中安装了Facebook …这在没有安装内置Facebook应用程序的模拟器中运行良好.

这是我的代码:

if (FB_APP_ID == null) {
    Builder alertBuilder = new Builder(this);
    alertBuilder.setTitle("Warning");
    alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                            "specified before running this example: see App.java");
    alertBuilder.create().show();
}

// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);

// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
    dispatcher.runHandler("stream");
}
else {
    dispatcher.runHandler("login");
}
最佳答案
生成哈希键是错误的.您可以使用两个步骤获取哈希键.一个是通过命令提示符.另一个是通过编码.通过命令提示符仅在第一次处理时使用哈希键.我不知道原因.我也遇到了同样的问题.所以我通过编程方式尝试了.

请遵循以下步骤:

将以下代码粘贴到oncreate()中.

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.packagename", 
                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) {

} catch (NoSuchAlgorithmException e) {

}

在上面的编码中使用您的包名称修改“com.example.packagename”(您可能会在Android Manifest文件中找到您的包名称).

运行您的应用程序转到粘贴上述代码的活动.在logcat中搜索“KeyHash”.您可能会找到一个密钥哈希.复制密钥哈希并转到Facebook应用程序仪表板页面.转到设置并输入下面的图像中的详细信息.

完成上述步骤后.重新启动应用程序,您现在可以登录到Facebook.
有关密钥哈希的更多详细信息,请查看link

如果在设置页面中添加错误信息,则意味着会出现一些错误.所以在那里使用正确的信息.此外,如果公众(除您之外)需要使用您的申请,则意味着您需要启用权限(在设置旁边的“状态和审核”中更改“是”).

转载注明原文:Android Facebook集成无效密钥哈希 - 代码日志