2012-11-07 58 views
0

在以前的android SDK,我通過調用Facebook.authorize()問新的許可,它顯示審批權限屏幕。但在SDK 3.0中,當我撥打FacebookActivity.openSessionForPublish()時,對話框始終顯示登錄表單。我如何顯示審批權限屏幕?請求新的SDK的額外權限,但對話框顯示登錄表格

我已經建立了具有令牌和過期日期並且其SessionState爲CREATED_TOKEN_LOADED的會話。

是否有任何要求顯示權限對話框或Facebook.authorize()總是顯示登錄表單?那麼請教我正確的方法。

我的代碼是像下面

public class FbConn extends FacebookActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     ... 
     if(savedInstanceState == null) { 
      Session savedSession = CommonUtil.getFbSession(CustomSessionStore.getFbInfo(getApplicationContext())); //get access token and expiration date from session store and set up new session. 
      Session.setActiveSession(savedSession); 
      setSession(savedSession); 
     } 

    } 

    protected void onStart() { 
     super.onStart(); 
     openSessionForPublish(EpisodeApplication.config.getSelectedServer().fbAppId, Constants.FB_PERMISSIONS); 
    } 

} 

更新

我註釋掉這些行和許可請求畫面顯示成功。但我不確定這是否正確。

com.facebook.LoginActivity線62,

Utility.clearFacebookCookies(this); 

com.facebook.Session線1202,

Utility.clearFacebookCookies(getStaticContext()); 
+0

我很難理解問題是什麼。你是否說過,每次啓動應用程序時,即使用戶已經通過身份驗證,登錄對話框也會顯示出來? –

+0

@JesseChen謝謝。我更新了問題。使用存儲的會話沒有問題。但是當應用程序要求額外的Facebook許可時,即使會話具有有效的令牌信息,新的SDK也始終顯示登錄表單(不是許可檢查屏幕)。 – kingori

回答

6

如果你已經有了一個有效的會話,從以前的驗證流程,然後如果你想申請新的權限然後使用Session.ReauthorizeRequest類。

Session.ReauthorizeRequest reauthRequest = new Session 
       .ReauthorizeRequest(this, Constants.FB_PERMISSIONS); 
session.reauthorizeForPublish(reauthRequest); 

這應該爲您要求的新權限顯示權限屏幕,而不是登錄表單。

但是,從您的邏輯來看,您不清楚您處理首次登錄的位置。如果您希望在處理它在這個類的話我建議使用下列內容:

Session.openActiveSession(this, true); 

如果沒有緩存的令牌這將打開一個登錄表單。如果存在緩存的令牌,它將創建一個新的會話並使其處於活動狀態。這將打開具有基本權限的會話(如果用戶需要登錄)或使用基於檢索到的緩存令牌的權限打開會話。然後您可以調用re-auth方法來請求發佈權限。您需要在上下文中執行此操作,並且通常不希望將調用auth函數背靠背調用,即登錄用戶,然後立即請求發佈權限。

+0

太棒了。它完美的作品。正如我請求自定義權限,您的建議並不適合我。但它非常有幫助。再次感謝。 – kingori

+1

在最新的Facebook v3 SDK中沒有Session.ReauthorizeRequest類。 – uthark

+2

是的,該方法是3.0測試版。請參閱https://developers.facebook.com/android/change-log-3.x/。 ReauthorizeRequest被重命名爲NewPermissionsRequest。 –

相關問題