ios – FBSession requestNewPublishPermissions在响应之前失败

我正在尝试使用iOS上的Facebook SDK获得用户的发布权限.

我正在调用下面的代码,如果应用程序没有必要的发布权限发布到用户的Facebook墙,则调用方法.

// No permissions found in session,ask for it
    [FBSession.activeSession requestNewPublishPermissions: [NSArray arrayWithObject:@"publish_actions"]
                                          defaultAudience: FBSessionDefaultAudienceEveryone
                                        completionHandler: ^(FBSession *session,NSError *error)
     {
         if( !error )
         {
          // Do something
         }
     }];

我第一次调用代码时,它将用户带到权限页面,在它甚至切换到设备上的safari之前,块被调用并返回此错误消息

Error Domain=com.facebook.sdk Code=2 "The operation Couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0xc426410 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorReauthorizeFailedReasonUserCancelled,

该应用程序然后继续在safari中显示权限页面,用户选择ok.然后它返回到应用程序.即使向用户显示权限页面并已接受,此时尚未设置权限.

当尝试第二次发布时,它会将用户带到safari中的权限页面,而requestNewPublishPermissions方法不会立即失败.用户选择确定,然后一切按预期工作.

因此,只有在第一次调用requestNewPublishPermissions时才会立即返回错误ErrorReauthorizeFailedReasonUserCancelled.

这发生在模拟器和设备上.

知道可能导致这种情况的原因吗?

解决方法

在这个问题 Facebook iOS 3.1 sdk login with publish permission callbacks的答案中找到了解决这个问题的方法
dispatch_async(dispatch_get_current_queue(),^{
     [self openSessionForPublishPermissions];
 });

opensessionforpublishpermissions是包含requestNewPublishPermissions方法方法.

“原因是重新授权的调用需要在调用openActiveSession ..的事件循环之后.”

我认为这是Facebook SDK中的一个错误,这是正常行为没有意义,我没有看到任何Facebook文档评论这是预期的行为.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...