使用 ErrorReauthorizedFailedReasonUserCancelled 调用 reauthorizeWithPublishPermissions 处理程序

Posted

技术标签:

【中文标题】使用 ErrorReauthorizedFailedReasonUserCancelled 调用 reauthorizeWithPublishPermissions 处理程序【英文标题】:reauthorizeWithPublishPermissions handler is called with ErrorReauthorizedFailedReasonUserCancelled 【发布时间】:2012-10-29 02:05:02 【问题描述】:

我正在使用 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 中的错误是否为零?

【问题讨论】:

developers.facebook.com/bugs/… 将其报告给 facebook 的错误跟踪系统 我也遇到过,你找到解决方法了吗? 【参考方案1】:

发生在我身上,经过一段时间的搜索,我找到了解决方案。您必须在 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
                                           ];
);

【讨论】:

你能提供一个完整的样本吗? dispatch_async 是否必须在 openActiveSessionWithReadPermissions 的 completionHandler 中调用? 是的,你应该在openActiveSessionWithReadPermissions的完成处理程序中这样做

以上是关于使用 ErrorReauthorizedFailedReasonUserCancelled 调用 reauthorizeWithPublishPermissions 处理程序的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)