2

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

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

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

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

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

4

1 回答 1

0

发生在我身上,经过一段时间的搜索,我找到了解决方案。您必须在dispatch_asyncopenActiveSessionWithReadPermissions 的处理程序 A 中调用 reauthorizeWithPublishPermissions:

dispatch_async(dispatch_get_current_queue(), ^{
    [[FBSession activeSession] reauthorizeWithPublishPermissions:permissions
                                                 defaultAudience:FBSessionDefaultAudienceEveryone
                                               completionHandler:^(FBSession *session, NSError *error) {
                                                   // handle the flow here
                                           }];
});
于 2012-12-30T11:56:03.163 回答