1

私はウェブアプリケーション用のログインに取り組んでいます。ユーザーが電子メールとパスワードを使って手動でサインインできるようにしました。あるいは、Googleサインインを使用してサインインすることもできます。好ましくは、Firebase認証状態変更機能を使用する。ユーザーが電子メールとパスワードまたはGoogleログインでFirebaseにサインインしたかどうかを確認する方法は?

`firebase.auth().onAuthStateChanged(firebaseUser => {....` 

私はあなたがFirebaseコンソールログに行くときあなたは彼らが署名した方法を伝えることができます知っているが、JavaScriptコードを使用して、それを決定する方法はありますか?

firebase.auth().currentUser.providerDataを使用して: enter image description here

+0

UserInfoをチェックしましたか? https://firebase.google.com/docs/reference/js/firebase.UserInfo "providerId 文字列 現在のユーザーの認証プロバイダIDです(例: 'facebook.com'または 'google.com')。 " – mjrdnk

+0

firebase.auth()。currentUser.providerIdのような意味ですか?それをテストするためにコンソールログに出力したときに、firebaseを表示するだけなので。 – Evan

+0

Hmm .. firebase.auth()とは何ですか?currentUserは何を返していますか?私はオブジェクトを仮定する。 – mjrdnk

答えて

2

@ mjrdnkの回答は正確ですが、警告があり、複数のプロバイダがリンクしている可能性があります。 firebase.auth().currentUser.providerData[0].providerIdを使用すると、別のリンクされたプロバイダがサインインに使用された場合でも、常に同じプロバイダが返されます。

+0

詳細を教えてください。 "署名に使用された現在のプロバイダを特定する最も正確な方法は、IDトークンのフィールド:' firebase.sign_in_provider'を調べることです。 – linasmnew

+1

ユーザにサインインすると、Firebase IDトークンが返されます。そのIDトークンは 'currentUser.getIdToken()'で取得できます。トークンには、発行者、オーディエンス、ユーザーの電子メール、電話番号、認証時間、リフレッシュ時間、有効期限などの情報が含まれており、ログインの方法は重要です。トークンのペイロードをbase64で復号して情報。これを理解するには、手動でユーザーのIDトークンをコピーし、https://jwt.ioに貼り付けてペイロードを調べます。このメソッドは、ユーザーが複数のプロバイダをリンクできるようにサインインプロバイダを取得する最も良い方法です。 – bojeil

関連する問題