使用Facebook的Android SDK进行身份验证时出现错误。

4
我正在开发的安卓应用程序中对用户进行身份验证,但从Facebook对话框中只得到了一个错误,没有详细信息。我没有发现任何异常来追踪或类似的内容。我按照 http://developers.facebook.com/docs/guides/mobile/#android 上的指南创建了我的登录对话框。
该页面建议使用 new Facebook("YOUR_APP_ID");但这会导致错误,我也尝试了API密钥,但结果相同。除了弹出提示之外,我没有做其他任何事情,但在点击返回键离开Facebook对话框之前,我甚至没有收到回调响应。
public class Base {
private Facebook fb;

    public Base() {
        fb = new Facebook("app_id_here");
    }

    public void onCreate(Bundle b) {
        super.onCreate(b);
    }

    private void doLogin() {
        fb.authorize(this, new DialogListener() {
            public void onComplete(Bundle values) {
                Toast.makeText(getApplicationContext(), values.toString(),
                        Toast.LENGTH_LONG).show();
            }
            public void onFacebookError(FacebookError error) {
                Toast.makeText(getApplicationContext(), error.getMessage(),
                        Toast.LENGTH_LONG).show();

            }

            public void onError(DialogError e) {
                Toast.makeText(getApplicationContext(), e.getMessage(),
                        Toast.LENGTH_LONG).show();
            }

            public void onCancel() {
                Toast.makeText(getApplicationContext(),
                        "You must be registered and signed in to perform that action",
                        Toast.LENGTH_LONG).show();

            }
        });
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        fb.authorizeCallback(requestCode, resultCode, data);
    }
}

不知道为什么会出错或者怎样去找到导致错误的原因?

P.S 我也已经在FB应用设置页面下 "移动设备" 下添加了密钥散列值,但这不是与Facebook SDK中登录失败无效密钥错误相同的问题,我已经尝试了那里的建议,但没有用。

2个回答

15

我也遇到过这个问题。首先,我需要知道你在Facebook应用程序中输入了哪个Key Hash值,如果是'ga0RGNYHvNM5d0SLGQfpQWAPGJ8=',那就是问题所在。我认为你输入了下面这个命令的密码生成密钥哈希值:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

如果你已经这样做了,请尝试执行以下操作,同样在终端上输入上述命令(我使用的是Ubuntu(Linux),你需要根据自己使用的操作系统输入相应的命令),并将密码输入为'android'。这次你将得到一个不同的密钥哈希值。复制该值并将其保存为Facebook应用程序的密钥哈希值。之后检查是否有效。对我来说起作用了。这会在使用调试密钥时发生。完成所有这些步骤后,当你要在Android市场上发布此应用程序时,你将再次根据使用的私钥更改密钥哈希值。尝试一下,也许这会有所帮助。


这正是情况所在...有没有任何记录这个的链接?谢谢,现在它可以工作了,不确定你说的关于何时准备发布应用程序的私钥是哪一个? - zcourts
抱歉,我刚才才意识到您是指签名阶段。请参考http://developer.android.com/guide/publishing/app-signing.html。 - zcourts
很高兴知道它对你有用。我不明白你实际上是什么意思,关于“不确定我是否理解你何时准备发布应用程序...哪个私钥?”当你要发布应用程序时,我们必须签署代码。在签署代码后,我们将获得密钥。从您在签署代码后获得的密钥中,您必须为Facebook生成单独的密钥哈希值,否则将再次出现相同的问题。 - Basil
我用“android”或“”作为密码时得到了相同的密钥。 这两个密码是我多年来一直成功使用的相同密码。 - Timmmm

0
在我的情况下,"~ / .android / debug.keystore" 是这个问题的“关键”。 检查“debug.keystore”的文件夹URL。 您必须确切更改为正确的URL。 然后,运行以下命令 .. $ cd /cygdrive/c/Users/watchout/.android <==== 我的Debug Keystore URL $ keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary| openssl base64
它要求“密码”,但是调试密钥库没有密码。 所以,您只需按“enter键”,它就会抛出一个密钥给我。 我使用它然后解决了这个问题。 再次尝试,robinsonc494!

我以为默认密码是“android”。 - Blundell
您输入的密码实际上并没有任何影响,但Facebook建议您使用“android”。 - Timmmm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接