Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Facebook登录按钮不会转到Safari,而是转到应用程序,然后出现故障_Ios_Swift_Facebook_Facebook Graph Api_Swift3 - Fatal编程技术网

Ios Facebook登录按钮不会转到Safari,而是转到应用程序,然后出现故障

Ios Facebook登录按钮不会转到Safari,而是转到应用程序,然后出现故障,ios,swift,facebook,facebook-graph-api,swift3,Ios,Swift,Facebook,Facebook Graph Api,Swift3,我还不确定如何始终如一地复制该漏洞,但有时在我删除应用程序并将其重新安装到设备上时会发生这种情况: 所以偶尔当我用Facebook按钮登录时。Facebook应用程序将打开。通常它的工作方式是在safari上打开facebook浏览器 无论如何,它会打开Facebook应用程序,然后不做任何事情就返回到我的应用程序。每次我按下“登录”按钮,它就会一遍又一遍地这样做,直到我删除我的应用并重新下载它。还有其他人经历过吗?我用的是Swift 3 以下是问题的gif图: 以下是我的Facebook登录

我还不确定如何始终如一地复制该漏洞,但有时在我删除应用程序并将其重新安装到设备上时会发生这种情况:

所以偶尔当我用Facebook按钮登录时。Facebook应用程序将打开。通常它的工作方式是在safari上打开facebook浏览器

无论如何,它会打开Facebook应用程序,然后不做任何事情就返回到我的应用程序。每次我按下“登录”按钮,它就会一遍又一遍地这样做,直到我删除我的应用并重新下载它。还有其他人经历过吗?我用的是Swift 3

以下是问题的gif图:

以下是我的Facebook登录代码:

fbLoginManager.logIn(withReadPermissions: ["public_profile", "email", "user_friends"], from: self) { (result, error) -> Void in
        if (error != nil){
            print(error)

            let loginManager = FBSDKLoginManager()
            loginManager.logOut()
            var controller:LoginController
            controller = self.storyboard?.instantiateViewController(withIdentifier: "LoginController") as! LoginController
            SCLAlertView().showWarning("Login Error #23", subTitle: "Could not log you in, this one is on facebook")
            self.present(controller, animated: true, completion: nil)
        } else {
            print("logging in")

        }
    }

使用Facebook SDK登录有几种行为选项,您可以通过设置
fbLoginManager
loginBehavior
属性来选择:

typedef NS_ENUM(NSUInteger, FBSDKLoginBehavior) {
  /*!
  */
  FBSDKLoginBehaviorNative = 0, /*!
  */
  FBSDKLoginBehaviorBrowser, /*!
  */
  FBSDKLoginBehaviorSystemAccount, /*!
  */
  FBSDKLoginBehaviorWeb,
};
在您的情况下,可以将其设置为FBSDKLoginBehaviorBrowser,例如:

func fbLogin(){
    //firstly check whether system fb account available, if so use it
    if SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook){
        fbLoginManger.loginBehavior = FBSDKLoginBehavior.SystemAccount
    }
    //then check whether fb app available, if so open it
    else if UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb://")!){
        fbLoginManger.loginBehavior = FBSDKLoginBehavior.Native
    }
    //lastly, present a popup web inside app
    else{ 
        fbLoginManger.loginBehavior = FBSDKLoginBehavior.Web
    }

    fbLoginManger.logInWithReadPermissions(["public_profile"], fromViewController: self) { (result:FBSDKLoginManagerLoginResult!, error:NSError!) -> Void in
       ...
    }

可以使用将FBSDKLoginManager的行为设置为FBSDKLoginBehaviorWeb。ans还参考以下链接: