我正在使用 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 "Session is not opening")并且Facebook 登录对话框没有显示。 如果我使用 Eclipse 在手机上运行该项目,那么一切正常。然后我删除该应用程序的所有内容并使用 .apk 文件安装项目。当我启动应用程序时,我的 Facebook 登录无效。
我将项目导出为 Android 应用程序。起初我尝试使用 debug.keystore 作为现有的密钥库,但它不起作用,然后尝试创建一个新的密钥库,这也不起作用。
我试图获取密钥哈希,但没有帮助。
谁能解释这个问题的原因是什么以及如何解决?