这是https://developers.facebook.com/docs/android/getting-started启动Facebook登录的代码。 (所有主要活动内部,特别是主要活动中的oncreate)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state, Exception exception) {
}
});
}
我的问题是,在onclicklistener中为loginbutton调用openActiveSession是否有效。在初始化活动时,完全启动facebook登录过程是没有意义的。
答案 0 :(得分:2)
是的,在onclicklistener中为loginbutton调用openActiveSession是有效的,但我给你一个更好的方法。它在下面 在buttonClick事件中使用此代码。
因为如果您将调用openActiveSession,那么每次都会打开打开的facebook登录对话框。但是,如果我们要检查用户是否已登录,请使用以下方法。
private void onClickFbLogin() {
Session session = Session.getActiveSession();
String[] permissions = { "email", "friends_birthday",
"friends_location", "offline_access", "publish_stream",
"user_photos", "publish_checkins", "photo_upload",
"read_stream" };
if (!session.isOpened() && !session.isClosed()) {
session.openForPublish(new Session.OpenRequest(this).setCallback(
statusCallback).setPermissions(permissions));
} else {
Session.openActiveSession(this, true, statusCallback);
}
}