FBSDKLoginManager返回"您已经授权foobar"而不是重定向到我的视图

时间:2016-08-22 03:31:51

标签: ios facebook facebook-sdk-4.0

我正在使用Facebook SDK 4. +并将登录流程添加到我的应用程序中。在我登录验证应用程序后,网络视图不会消失。我只能点击完成,取消认证流程而不是完成它。

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
 logInWithReadPermissions: @[@"public_profile", @"email"]
 fromViewController:self
 handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
     if (error) {
         NSLog(@"Process error");
     } else if (result.isCancelled) {
         NSLog(@"Cancelled");
     } else {
         //this never get executed.
         [self firebaseSignInWithFBToken:[result token].tokenString];
     }
 }];

有什么建议吗?

对于授权的应用程序,当我将currentAccessToken设置为nil并重新授权时,

enter image description here

点击“确定”后,网页视图就会变成空白,并且不会因为回到我自己的视线而放弃。

1 个答案:

答案 0 :(得分:1)

这可能是这个(模拟器中的白屏)发生的主要原因,因为appDelegate中的openURL方法设置不正确。

之前我遇到过这个问题,通过使用这段代码解决了这个问题。 这段代码很快。

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

    var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)

    shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,
                                                                                sourceApplication: sourceApplication,
                                                                                annotation: annotation)
    return shouldOpen

}

/// This is necessary for ios9 and plus
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    if #available(iOS 9.0, *) {
        var shouldOpen :Bool = FBSDKApplicationDelegate.sharedInstance().application(
            app,
            openURL: url,
            sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String,
            annotation: nil)

        shouldOpen = shouldOpen ? shouldOpen : GIDSignIn.sharedInstance().handleURL(url,sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String?,
                                                                                    annotation: options[UIApplicationOpenURLOptionsAnnotationKey])

        return shouldOpen
    }
    return true
}

如果您不使用Gmail登录,请删除GIDsign代码,然后只返回Facebook回调。