2012-12-26 57 views
3

您好我正在開發與Facebook SDK 3.0新的Android應用程序。嘗試請求具有未決請求的會話的新權限

我試圖在用戶登錄後申請'publish_stream'權限。 所以,在onSessionStateChange(),我把我的代碼請求'publsh_stream'的權限,但它不起作用。

這裏是我的代碼:

private void onSessionStateChange(Session session, SessionState state, Exception exception) { 

    if (state.isOpened()) { 

     if (pendingPublishReauthorization && state.equals(SessionState.OPENED_TOKEN_UPDATED)) { 
      pendingPublishReauthorization = false; 
      publishFeed(userName); 
     } 

     m_pd.show(); 
     Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 
      @Override 
      public void onCompleted(GraphUser user, Response response) { 
       if (user != null) { 

        String username=buildUserInfoDisplay(user); 
        userName=username; 
        saveAccount(username, "facebook"); 

        Log.d(com.dress.folio.Constants.FACEBOOK_TAG, "login success"); 
        //publishFeed(userName); 
        m_pd.dismiss(); 

        h.postDelayed(irun, 1000); 
        Activity GetActivity=getActivity(); 
        if(GetActivity != null) GetActivity.finish(); 

       } 
      } 
     }); 


     List<String> permissions = session.getPermissions(); 
     if (!isSubsetOf(PERMISSIONS, permissions)) { 

      pendingPublishReauthorization = true; 
      //if(state == SessionState.OPENED_TOKEN_UPDATED) { 
       Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS); 
       session.requestNewPublishPermissions(newPermissionsRequest); 
      //} 

     } 



    } else if (state.isClosed()) { 
     Log.i(com.dress.folio.Constants.FACEBOOK_TAG, "Logged out..." + exception); 
    } 
} 

在行session.requestNewPublishPermissions(newPermissionsRequest);,編譯器總是說錯誤,如:一個試圖申請新的權限具有掛起的請求的會話。

如何在用戶facekbook SSO登錄後在我的應用程序中請求publish_stream。

回答

11

我只是面臨同樣的問題,onActivityResult方法被overrided。 因此,請確保調用:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 

} 

此方法後應該調用你的回調。 更多的信息在這裏(第6):https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/

+2

犯規多大意義或回答清楚將q – ChuckKelly

+0

在我的活動方法「super.onActivityResult(......)」不叫。所以請按照您的代碼進行操作,並確保在使用Facebook「Session.getActiveSession()。onActivityResult」的位置被調用。你得到這個錯誤,就像你嘗試登錄某處,但是你永遠不會消費這個安東尼。 – Fraid

+2

我幾乎忽略了這個,因爲票數很低,沒有被接受的答案和壞評論,但這是**正確的**!謝謝! –