ios - 当allowLoginUI为“NO”时,openActiveSessionWithReadPermissions不回调

标签 ios objective-c xcode facebook facebook-ios-sdk

我正在更新到最新的SDK Facebook(3.10),而我在登录时遇到了问题。
当我通过allowLoginUI = YES时,它将很好地登录并调用回调块。但是,当我通过allowLoginUI = NO时,回调函数就不会被调用...我不知道为什么。
我想在用户已有 session 时传递allowLoginUI = NO。
这是代码。

- (void)openFBSession:(NSNumber*)active{
    BOOL boolValue = [active boolValue];
    NSArray *permissions = [[NSArray alloc] initWithObjects:@"basic_info, email", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:boolValue
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         if (error) {
             // Handle errors
             [self handleAuthError:error];
         } else {
             // No error
             [self sessionStateChanged:session state:state error:error];
         }
     }];
}

在这里,当我调用函数时。 (enableScreen是显示facebookLogin按钮的功能)
if (FBSession.activeSession.state == FBSessionStateCreated) {
            // Yes, so just open the session (this won't display any UX).
            [self.window.rootViewController performSelector:@selector(enableScreen)];
        } else {
            if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded){
                [self openFBSession:[NSNumber numberWithBool:NO]];
            }else{
                [self.window.rootViewController performSelector:@selector(enableScreen)];
            }

        }

谢谢!

最佳答案

您需要检查openActiveSessionWithReadPermissions方法的返回值。
如果在没有向用户展示UI的情况下同步打开了 session ,它将返回YES。

当传递allowLoginUI:NO时,由于此方法是同步执行的,因此不会调用回调。

关于ios - 当allowLoginUI为“NO”时,openActiveSessionWithReadPermissions不回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246231/

相关文章:

ios - UIWebView 不会在 Swift 中重新加载新的 URL

ios - 如何在 objective-c 中获得特定高度的字符串

ios - 等待 block 完成

ios - 如何在 Swift 中显示 SDWebimage 背景颜色

ios - Cordova 在 CLI 上构建 iOS 版本失败的代码签名检查

ios - 你如何将一个类从 Swift 传递到 Cocoa 中以便使一个新的 UITableViewCell 出队?

ios - 如何在 iOS Swift 中使用 alamofire 获取 json 响应?

ios - 如何制作一种检测变量是否更改的方法?

java - 从 Java 调用 Objective-C 代码的最简单方法是什么?

xcode - ITC.app.preReleaseBuild.errors.invalidBinary应用商店