我有一个iOS应用程序,它使用Firebase作为后端进行身份验证。
用户登录然后关闭应用后,我不希望用户重新输入他们的电子邮件和密码。我的方法是在成功登录Keychain后保存访问令牌,然后当用户返回应用程序时,使用钥匙串中的令牌进行登录。
我已尝试使用FIRAuth.auth()?.signInWithCustomToken(customToken) { (user, error) in
方法,但在使用自定义令牌时这并不完全正确,这不是我正在做的事情。< / p>
我有办法做到这一点吗?
// login with email / password
FIRAuth.auth()?.signInWithEmail(email, password: password, completion: { (firebaseUser, error) in
if error == nil {
FIRAuth.auth()!.currentUser!.getTokenWithCompletion({ (token, error) in
if error == nil {
// save token to keychain
} else {
print(error)
}
})
} else {
print(error)
}
})
// user comes back to app
do {
// get saved token from keychain
if let myToken = try keychain.get("token") {
FIRAuth.auth()?.signInWithCustomToken(myToken, completion: { (user: FIRUser?, error: NSError?) in
if error == nil {
// show post login screen
} else {
}
})
}
} catch {
// error getting token from keychain
}
}
答案 0 :(得分:0)
我正以错误的方式解决这个问题。使用第三方身份验证提供程序(如Facebook,Google等)并从其中一项服务获取OAuth令牌时,保存令牌是合适的。
在我使用电子邮件和密码登录时,不需要令牌,而是可以将密码安全地保存在钥匙串中,稍后用于登录。