无法在我的Android应用程序中获取Facebook的用户数据

时间:2015-01-22 11:31:18

标签: android facebook sdk

我正在使用以下代码从facebook登出..

public static void callFacebookLogout(Context context) {
    Session session = Session.getActiveSession();
    if (session != null) {
        if (!session.isClosed()) {              
            //session.close();
            session.closeAndClearTokenInformation();
        }
    } else {
        session = new Session(context);
        Session.setActiveSession(session);
        //session.close();
        session.closeAndClearTokenInformation();
    }
}

在此之后,我无法在登录后获取用户详细信息,因为我将获得null GraphUser ..

mFacebookLogin.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
        @Override
        public void onUserInfoFetched(GraphUser user) {
            if (user != null) {                 
                getFacebookUserInformation();
            }else {
            //handle error case      
            }
        }
    });

我正在回复

private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception      exception) {           
        Log.i("facebook", "isOpened: "+state.isOpened());
        Log.i("facebook", "isClosed: "+state.isClosed());
    }
};

状态为isClosed为真。

简而言之,流程就是这样......

  1. 打开我的Android应用
  2. 点击Facebook登录按钮
  3. 原生Facebook应用程序将打开并询问用户凭据。
  4. 输入用户凭据
  5. 登录后,本地Facebook应用程序将要求应用程序权限访问公共个人资料和电子邮件。
  6. 用户授权应用
  7. 调用回到Android应用程序,首先在onAcvitityResult()中,然后在call()之后的onUserInfoFetched()中。在onUserInfoFetched中,GraphUser不为null,并且在call()状态下打开。
  8. Android应用单独发出请求以获取用户详细信息并在应用UI上显示。
  9. 从Android应用程序注销并调用facebooklogut()函数。关闭Android应用程序。
  10. 打开Android应用程序(它是一个新的Android应用程序会话)
  11. 进入Facebook登录按钮所在的屏幕。
  12. 点击Facebook登录按钮。
  13. facebook本地应用程序随progressdialog打开。
  14. 由于用户已经登录并且已经授权Android应用程序,因此呼叫将返回到Android应用程序。
  15. 但是这次onUserInfoFetched()有空的GraphUser和call()方法已经关闭状态。
  16. 因此我无法获取用户详细信息

0 个答案:

没有答案