使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)