使用ErrorReauthorizedFailedReasonUserCancelled调用reauthorizeWithPublishPermissions处理程序

时间:2012-10-29 02:05:03

标签: ios ios6 facebook-ios-sdk

我正在使用iOS SDK 3.1.1并试图同时获得读取和发布权限。 正如教程所说,我正在调用FBSession openActiveSessionWithReadPermissions并在其处理程序 - 处理程序A中调用[[FBSession activeSession] reauthorizeWithPublishPermissions仅在调用处理程序A时使用FBSessionStateOpen的会话状态。

当我在iOS 6的设置中设置了facebook帐户时,reauthorizeWithPublishPermissions的处理程序 - 处理程序B - 被正常调用,错误参数为nil。

但是,如果我在iOS 6的设置中没有设置facebook帐户,则当应用程序切换到Safari以获得发布权限时,将使用名为“ErrorReauthorizeFailedReasonUserCancelled”的reauth错误调用处理程序B.

更奇怪的是这个。在调用处理程序B之前的两种情况下,调用处理程序A时会话状态为FBSessionStateOpenTokenExtended。

这些新SDK的正常或预期行为?如果是这样,我应该不检查处理程序B中的错误是否为n?

1 个答案:

答案 0 :(得分:0)

发生在我身上,经过一段时间的努力,我找到了解决办法。您必须在openActiveSessionWithReadPermissions的处理程序A中调用dispatch_async中的reauthorizeWithPublishPermissions:

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