将此代码放在点击监听器上会更合适吗?

时间:2014-08-19 05:26:10

标签: android facebook android-fragments

这是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登录过程是没有意义的。

1 个答案:

答案 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);
    }
}