Facebook登录回调会话始终关闭

时间:2014-03-14 13:00:06

标签: android facebook session facebook-graph-api

我的应用中有一个Facebook登录功能。现在我的代码在模拟器中运行良好。但是当我尝试将其测试到Android手机时。没有错误,但即使我已登录,会话似乎也始终关闭。

这是我的代码:

Session session = Session.getActiveSession();
    //check if user is logged in at facebook

    if (session != null && session.isOpened()) {
        Log.i("", "Session Open");
        Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

            // callback after Graph API response with user object
            @Override
            public void onCompleted(GraphUser user, Response response) {
              if (user != null) {
                  facebookId = user.getId();
                  loginType = 2;
                  LogMeIn();

              }
            }
          });
    } 
    else    
    {
        Log.i("", "Session Closed");
        // 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) {
            if (session.isOpened()) {
                Log.i("", "Session Open");
              // make request to the /me API
              Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                // callback after Graph API response with user object
                @Override
                public void onCompleted(GraphUser user, Response response) {
                  Log.i("", "Complete");
                  if (user != null) {
                      facebookId = user.getId();
                      loginType = 2;
                      LogMeIn();

                  }
                }
              });
            }
            else
            {
                Log.i("", "Session Closed"); //I always end up here
            }
          }
        });
    }

如你所见。在会话更改后检查会话时,我总是在会话关闭部分结束。我不知道什么是错的,但这似乎适用于模拟器。现在,没有发生获取图形用户信息的代码。有任何想法吗?谢谢!

其他信息:我试图退出我的fb帐户。并点击我的应用程序上的登录按钮。它将我重定向到facebook的登录屏幕,但同样,由于会话已关闭,因此没有发生获取图形用户的代码。

1 个答案:

答案 0 :(得分:1)

如果您在片段中使用session,请尝试使用此代码,它适用于我:

else {
    Log.d("ss", "Session Closed");
    // start Facebook Login
    Session.openActiveSession(getActivity(),
    MyFragment.this, true, callback);
}

不要忘记UiLifecycleHelper使用onActivityResultonResumeonCreateonDestroyonSaveInstancceState ... 或者自己管理会话以保存状态。