【发布时间】:2015-04-05 12:44:02
【问题描述】:
大家好,最近刚刚开发了我的第一个 android 应用程序,它可以登录 facebook 并尝试在没有对话框的情况下使用图形 API 进行状态更新。 下面的代码是授权代码(它在 fbook 开发网站本身上),它一直对我很好,直到最近。现在我的应用程序在我的模拟器上可以正常登录,但是当我导出 APK 文件并将其放在手机上时,它给了我“身份验证错误”。有人可以解释一下吗?它只是不再向我显示登录页面,在我创建之后一个新的密钥库和哈希键,并像往常一样在我的 Facebook 开发应用页面上更新了该哈希键。
我认为这是由于 keyhash 等原因,但我不太了解,无法找出问题所在。我所做的是,我单击导出,应用程序,然后创建一个新的密钥库(第一次,否则我使用现有的密钥库),然后我使用“keytool exportcert”等找到我的哈希键,如 fbook 开发网站上所示。然后我将该哈希键输入到我的 Facebook 帐户上的应用程序中。但有时即使密钥库密码正确,它也会说“密钥库格式”不同,即使我在同一个应用程序之前使用过它!然后我必须创建一个新的密钥库,然后再次导出证书,这一切都很痛苦!一定有更简单的方法吗?
有人能解释一下 Facebook 应用的 hashkey 是如何工作的吗?
提前致谢!
我的验证码:
public void login()
{
facebook.authorize(this,new String[] { "email", "read_stream", "publish_stream"}, new DialogListener(){
int fbcheck=0;
@Override
public void onComplete(Bundle values) {
fbcheck=1;
facebookauthcheck(fbcheck);
}
@Override
public void onFacebookError(FacebookError error) {
fbcheck=0;
facebookauthcheck(fbcheck);
}
@Override
public void onError(DialogError e) {
fbcheck=0;
facebookauthcheck(fbcheck);
}
@Override
public void onCancel() {
fbcheck=2;
facebookauthcheck(fbcheck);
}
});
}
public void facebookauthcheck(int fbcheck)
{
if (fbcheck == 0) {
Toast.makeText(this, "Authentication Error", Toast.LENGTH_LONG).show();
}
else if (fbcheck==1)
{
Toast.makeText(this, "Authenticated", Toast.LENGTH_LONG).show();
}
else
Toast.makeText(this, "Authentication Cancelled", Toast.LENGTH_LONG).show();
}
【问题讨论】:
标签: android facebook authentication