即使注销后,fb 登录也不会要求登录凭据 iOS swift 4

Rj1*_*j19 3 facebook swift

我正在 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()
}
Run Code Online (Sandbox Code Playgroud)

我可以登录和注销。但下次尝试登录时它不会要求我输入密码。意味着我无法使用不同的 Facebook 帐户登录。

同样在 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)

   }
Run Code Online (Sandbox Code Playgroud)

Bha*_*avR 5

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

调用以下函数来注销:

FB.logout(function(response) {
  // user is now logged out
});
Run Code Online (Sandbox Code Playgroud)

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

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

希望这对您有帮助。