2016-07-29 6 views
0

Firebaseを認証のバックエンドとして使用するiOSアプリケーションがあります。Firebase 3でのacccessトークンの再利用

ユーザーがログインしてアプリを閉じると、ユーザーはメールとパスワードを再入力する必要はありません。私のアプローチは、キーチェーンへのログインが成功した後にアクセストークンを保存し、ユーザーがアプリに戻ったときに、キーチェーンのトークンを使ってサインインすることです。

私は方法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などのサードパーティの認証プロバイダを使用し、それらのサービスの1つから返されたOAuthトークンを取得する場合に適切です。

私の場合、電子メールとパスワードを使用してログインすると、トークンは必要なく、代わりにキーチェーンに安全に保存し、後でログインに使用することができます。

関連する問題