在Firebase 3中重用访问令牌

时间:2016-07-29 23:09:40

标签: ios swift firefox firebase-authentication

我有一个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
}

}

1 个答案:

答案 0 :(得分:0)

我正以错误的方式解决这个问题。使用第三方身份验证提供程序(如Facebook,Google等)并从其中一项服务获取OAuth令牌时,保存令牌是合适的。

在我使用电子邮件和密码登录时,不需要令牌,而是可以将密码安全地保存在钥匙串中,稍后用于登录。