2012-10-29 49 views
2

我正在使用iOS SDK 3.1.1並試圖同時獲得讀取和發佈權限。 正如教程所說,我調用FBSession openActiveSessionWithReadPermissions並在其處理程序 - 處理程序A-調用[[FBSession activeSession] reauthorizeWithPublishPermissions僅當處理程序A使用FBSessionStateOpen的會話狀態進行調用。reauthorizeWithPublishPermissions處理程序調用ErrorReauthorizedFailedReasonUserCancelled

當我有Facebook帳戶設置在iOS 6的設置,reauthorizeWithPublishPermissions的處理程序 - 處理程序B - 通常調用,錯誤參數爲零。

但是,如果我沒有在iOS 6的設置中設置Facebook帳戶,則當應用切換到Safari以獲得發佈權限時,處理器B將被調用帶有名爲「ErrorReauthorizeFailedReasonUserCancelled」的reauth錯誤。

更奇怪的是這個。在調用處理程序B之前的兩種情況下,都使用FBSessionStateOpenTokenExtended的會話狀態調用處理程序A.

新SDK的這些正常或預期的行爲?如果是這樣,我不應該檢查處理程序B中的錯誤是否爲零?

+0

https://developers.facebook.com/bugs/545891522094555?browse=search_509396c40fa349988430305報告給Facebook的錯誤跟蹤系統 – minorblend

+0

發生在我身上過,你有沒有想出一個解決方法? – marchinram

回答

0

發生在我身上,搜索一段時間後,我找到了解決方案。你必須openActiveSessionWithReadPermissions的處理程序中調用reauthorizeWithPublishPermissions在dispatch_async

dispatch_async(dispatch_get_current_queue(), ^{ 
    [[FBSession activeSession] reauthorizeWithPublishPermissions:permissions 
               defaultAudience:FBSessionDefaultAudienceEveryone 
               completionHandler:^(FBSession *session, NSError *error) { 
                // handle the flow here 
              }]; 
}); 
+0

可以提供完整的樣品嗎?是否必須在openActiveSessionWithReadPermissions的completionHandler中調用dispatch_async? –

+0

是的,你應該在'openActiveSessionWithReadPermissions'的完成處理程序中執行此操作 – haynar