2016-07-29 4 views
0

У меня есть приложение iOS, использующее Firebase в качестве бэкэнда для аутентификации.Повторное использование токена доступа в Firebase 3

Как только пользователь входит в систему и закрывает приложение, я не хочу, чтобы пользователь повторно вводил свой адрес электронной почты и пароль. Мой подход заключается в том, чтобы сохранить токен доступа после успешного входа в Keychain, а затем, когда пользователь вернется в приложение, используйте токен из keychain для ввода.

Я пробовал использовать метод FIRAuth.auth()?.signInWithCustomToken(customToken) { (user, error) in, но это не совсем так, как это делается при использовании пользовательских токенов, что не то, что я делаю.

Есть ли способ для меня сделать это?

// 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

Я приближался к этой проблеме в неправильном направлении. Сохранение маркера подходит при использовании стороннего поставщика аутентификации, например Facebook, Google и т. Д. И получения маркера OAuth взамен от одной из этих служб.

В моем случае при входе в систему с использованием электронной почты и пароля токен не требуется, и вместо этого пароль можно безопасно сохранить в цепочке ключей и использовать позже для входа.

Смежные вопросы