簡體   English   中英

Facebook Session在OnActivityResult上為空

[英]Facebook Session null on OnActivityResult

當我更改密碼並嘗試登錄該應用程序時,使用適用於Android的Facebook sdk 3.14,將打開Facebook本機應用程序,並要求我輸入新密碼。 問題是,如果我將我的應用程序置於后台,然后再次恢復我的應用程序並輸入新密碼並按登錄,則該應用程序將崩潰,因為我的會話在OnActivityResult上為空。 有人可以建議如何避免會話獲取null或如何處理它。

// This method gets the user logged in without any permission(basic
// permissions which are default will be asked).
@Override
public void login() {
    session = Session.getActiveSession();

                if (session == null
                || session.getState() == SessionState.CLOSED_LOGIN_FAILED
                || session.getState() == SessionState.CLOSED) {
            session = new Session(context);
        }
        if (!session.isOpened()) {
            session.openForRead(new Session.OpenRequest(this));
        }
        Session.setActiveSession(session);

}


protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    session = Session.getActiveSession();
    session.onActivityResult(this.activity, requestCode, resultCode,
                data);
    if (resultCode == Activity.RESULT_OK && session.isOpened()) {
        loginResult(true);
    }

    // If the user cancels the login process or it gets cancelled due to
    // some another reason.
    if (resultCode == Activity.RESULT_CANCELED) {
        Log.e("LOGIN", "CANCELLED");
        inter.loginResult(false);
    }

}



// Facebook Login Result
@Override
public void loginResult(boolean result) {
    // TODO Auto-generated method stub
    if (result) {
        Log.e("Facebook Login ", "Successful");
    } else {
        Log.e("Facebook Logout", "Un Successful");
    }
}

它顯示的異常是:

java.lang.RuntimeException: Unable to resume activity   {com.example.FirstDemo/com.example.FirstDemo.FC_LoginActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=199188, result=-1, data=Intent { (has extras) }} to activity {com.example.FirstDemo/com.example.FirstDemo.FC_LoginActivity}: java.lang.NullPointerException

嘗試如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    session = Session.getActiveSession();
    if(session !=null)
     {
       session .onActivityResult(this.activity, requestCode, resultCode,
                data);
       if(session.isOpened())
       {
            loginResult(true);
       }
       else
        {
                loginResult(false);
         }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM