2013-02-25 101 views
2

有一項任務是爲具有多個權限的服務器端訪問權限(多個讀取和發佈)提供。在3.0版中,會話打開有兩種單獨的方法:openForRead和openForPublish。Facebook SDK 3.0 - 附加權限

在開始申請是要求讀取權限:

private void authorizeFacebook() { 
    if (DEBUG) 
     Log.d(TAG, "Facebook authorization"); 
    Session session = Session.getActiveSession(); 
    if (!session.isOpened() && !session.isClosed()) { 
     session.openForRead(this.createReadRequest()); 
    } else { 
     Session.openActiveSession(this, true, mFacebookSessionCallback); 
    } 
} 

但狀態回調後,應用程序要求發佈權限:

if (session.isOpened() && !session.getPermissions().contains("publish_stream")) { 
    if (DEBUG) 
     Log.d(TAG, "Facebook, Request additional permission: Publish Stream"); 

    session.requestNewPublishPermissions(new NewPermissionsRequest(this, Arrays.asList("publish_stream")).setCallback(mFacebookSessionCallback).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO)); 

並且在用戶體驗的一個巨大的問題,因爲在額外的權限請求之後,會出現Facebook登錄表單,並且用戶必須再次輸入憑據......它是否按照SDK開發人員的設計工作?..或者我做錯了什麼?

回答

5

可能是這個答案的晚了。我有一個類似的問題,用於Android的FB SDK 3.0。這是SDK中的一個bug,他們在3月20日發佈的FB SDK 3.0.1 for Android中修復了它。 change log提到:

Web視圖登錄對話框包含用於請求新權限的場景的令牌信息。這避免了無論何時請求會話的新權限時,用戶都必須輸入他們的登錄憑證。

升級後再試一次。從here獲取新的SDK。

+0

嗯,更好的是,Facebook SDK團隊給開發者一種方法,所以我們可以避免鏈接權限的東西。但是,無論如何,謝謝;) – 2013-04-01 09:28:26

0

我發現如果用戶的Android設備上沒有安裝Facebook應用程序,那麼每次他/她被要求獲得額外的權限時都會出現登錄屏幕。但是,如果用戶確實在他們的設備上安裝了Facebook應用程序,那麼我發現他/她只需要通過單擊是/否按鈕來確認/取消確認附加權限。

順便說一句,我已經制定了一系列三個簡短的文章,解釋如何打開Facebook會話,請求額外的權限等等。第一個是Here's

相關問題