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

Posted

技术标签:

【中文标题】Facebook 登录按钮不会转到 Safari,而是转到应用程序,然后出现故障【英文标题】:Facebook login button does not go to Safari, but goes to app instead, then glitches back 【发布时间】:2016-10-10 03:56:45 【问题描述】:

我还不确定如何始终如一地复制该错误,但有时当我删除应用并在设备上重新安装它时会发生这种情况:

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

无论如何,它会打开 Facebook 应用程序,然后什么都不做就返回我的应用程序。每次我按下登录按钮时,它都会一遍又一遍地这样做,直到我删除我的应用程序并重新下载它。有没有其他人遇到过这种情况?我正在使用 Swift 3。

这是问题的 gif:

Gif of Facebook login problem

这是我的 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")

        
    

【问题讨论】:

您可以使用 FBSDKLoginManager 的设置行为到 FBSDKLoginBehaviorWeb。还请参考以下链接:***.com/questions/31311125/… 【参考方案1】:

使用Facebook SDK登录有多种行为选项,您可以通过设置loginBehaviorproperty of fbLoginManager来选择一种:

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
       ...
    

【讨论】:

以上是关于Facebook 登录按钮不会转到 Safari,而是转到应用程序,然后出现故障的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序

使用 iOS 应用程序中的另一个帐户登录 Facebook

iPad Safari 主屏幕网站卡在 Facebook 登录

Facebook登录无法快速工作

Facebook iOS 9 SDK 登录重定向到 Safari 上的 mbasic.facebook.com

如何制作登录流程IOS应用