我按照 https://developers.facebook.com/docs/howtos/androidsdk/3.0/native-login/ 教程实现了登录过程。在使用 Facebook 原生应用程序登录时,它可以正常工作,但是如果没有原生应用程序,则首先会显示一个错误,然后我点击“确定”,再次点击登录按钮,就可以正常工作了。我不明白为什么第一次不起作用?
我不明白问题出在哪里?这是个 bug 吗?更新:这是代码。
![android facebook login error](https://istack.dev59.com/1PO76.webp)
btnFacebook.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(
UserLoginActivity.this).setPermissions(
Arrays.asList("basic_info", "email")).setCallback(
statusCallback));
}
else {
Session.openActiveSession(UserLoginActivity.this, true,
statusCallback);
}
}
});
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
final String token = session.getAccessToken();
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
new AsyncFaceLogin(UserLoginActivity.this)
.execute(user.getId(),user.getFirstName(),user.getLastName(),(String)user.getProperty("email"),token);
}
}
});
}
}
}