我使用Facebook SDK 3.0开发包含Facebook登录的Android应用程序。
我使用这样的功能登录使用Facebook:
public void login(final ProgressDialog dialog) {
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
// TODO Auto-generated method stub
if (session.isOpened()) {
AppSettings.facebookAuthToken = session.getAccessToken();
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
// TODO Auto-generated method stub
if (user != null) {
Log.e("gavau", "kazka");
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
RequestParams a = new RequestParams();
// a.put("foo", "bar");
a.put("tz",
""
+ (tz.getRawOffset() + tz
.getDSTSavings())
/ 1000);
a.put("fb_id", user.getId());
a.put("fb_authkey",
AppSettings.facebookAuthToken);
Log.e("siunciu", a.toString());
AppSettings.facebookId = user.getId();
NetworkClient.receiveJSON("register/",
a,
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(
String a) {
Log.e("gavau", a);
if (a.equals("0")) {
Toast.makeText(
getApplicationContext(),
"Hi, everything's OK!",
0).show();
AppSettings.logged = true;
onLogin(dialog);
}
else
Toast.makeText(
getApplicationContext(),
"bėda " + a,
Toast.LENGTH_SHORT);
}
});
} else {
Toast.makeText(getApplicationContext(),
" User is equal to NULL!", 0)
.show();
}
}
});
} else {
Toast.makeText(getApplicationContext(),
"Session is not opened", 1).show();
}
}
});
}
在开发应用程序时一切正常,但我导出应用程序后Facebook登录不再有效(我得到了toast “会话未打开”)并且 Facebook登录对话框不是所示。 如果我使用Eclipse在手机上运行项目,那么一切都很好。然后我删除此应用程序的所有内容并使用.apk文件安装项目。当我启动应用程序时,我登录Facebook无效。
我将项目导出为Android应用程序。 起初我尝试使用debug.keystore作为现有的密钥库,但它没有用,然后尝试创建一个新的密钥库,这也不起作用。
我试图获得一个密钥哈希,但它没有帮助。
有谁可以解释这个问题的原因是什么以及如何解决?
答案 0 :(得分:0)
经过一段时间后,我终于通过生成一个新的密钥哈希解决了这个问题。它可能是我的第五个密钥哈希,并且至少有几个是使用与debug.keystore不同的密钥库生成的。但这次我使用了一个不同的方法,并形成了不同的密钥哈希。我使用的方法在那里描述: