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