我正在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)
}
答案 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应用中删除或注销帐户,然后重试。