即使退出iOS swift 4,fb login也不要求提供登录凭据

时间:2019-06-05 10:16:30

标签: swift facebook

我正在iOS应用中实现fb登录,想在同一应用中使用不同的fb帐户登录。

我已经使用cocoapods而不是任何第三方库安装了sdk。迅捷4,Xcode 9,

让经理= LoginManager()

func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) {

    if (AccessToken.current == nil){
    //loginButton.loginBehavior = .browser
    DispatchQueue.main.async(){
  // LoginManager.init(loginBehavior: .web, defaultAudience: .everyone)

        print(LoginBehavior.self)
    self.manager.logIn( permissions: [ .publicProfile, .email ], viewController: self){(result) in
        switch result {
        case .cancelled:
            print("user cancelled login process")
            break
        case .failed(let err):
            print("login failed with error: \(err.localizedDescription)")
            break
        case .success(let grantedPermissions, let declinedPermissions, let accessToken):
            print(accessToken)
          //get user profile


        }
    }
    }
    print("login")
    } else {
        print("user is already Logged in")
    }
}
func loginButtonDidLogOut(_ loginButton: FBLoginButton) {
    AccessToken.current = nil
    manager.logOut()
}

我可以登录和注销。但是在下次尝试登录时,它不会要求我输入密码。表示我无法使用其他fb帐户登录。

也在AppDelegate文件中,我在实现fbsdk函数时遇到错误:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

     SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) 
     return true
}

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
   return SDKApplicationDelegate.shared.application(app, open: url, options: options)

   }

2 个答案:

答案 0 :(得分:0)

当您登录Facebook应用程序或在移动浏览器中时,除非您明确注销,否则它将保持活动会话。当任何用户尝试使用第三方应用程序中的Facebook登录时,如果该用户是从Facebook应用程序中登录或通过移动浏览器中的网站登录,则它不会要求用户登录,并且该登录帐户将被直接使用。您必须从Facebook应用程序或移动浏览器注销才能使用其他帐户登录。从用户首次登录到应用程序开始,如果用户登录到Facebook并输入Facebook凭据,则它将将该会话保存在移动浏览器或Facebook应用程序(如果可用)中,因此下一次它将不再要求输入凭据。 / p>

调用下面的函数注销:

FB.logout(function(response) {
  // user is now logged out
});

请通过以下链接在注销场景中参考不同的情况:

https://developers.facebook.com/docs/reference/javascript/FB.logout

希望这对您有所帮助。

答案 1 :(得分:-1)

您必须将其保存在钥匙串中,这就是为什么它不再再次要求提供凭据的原因。请尝试从本地fb应用中删除或注销帐户,然后重试。