3

私のユーザが自分のアプリケーションにログインしていることを確認するにはどの認証プロバイダを使用しますか? Facebookの認証プロバイダを使用して、または電子メールプロバイダを使用して、またはGoogleの認証プロバイダを使用して、自分のユーザーが自分のアプリにログインしたことを検出したかったのです。 Firebase Docsでこれを検索しましたが、適切な回答は見つかりませんでした。ログインしたユーザのFirebase認証プロバイダを検出

答えて

2

1人のユーザーが複数のプロバイダでサインインすることができます。あなたが電話するとき:

FirebaseAuth.getInstance() 
.getCurrentUser().getProviderId() 

いつもfirebaseを返します。 firebaseにおける単一のプロバイダの概念は、ユーザーがFacebookで署名したかどうかを検出するので、あなたはこの

for (UserInfo user: 
FirebaseAuth.getInstance(). 
getCurrentUser().getProviderData()) { 
if (user.getProviderId().equals("facebook.com")) { 
System.out.println("User is signed in with Facebook"); 
    } 
} 

などのプロバイダデータ役立ちます希望を確認する必要がありますもうもはや存在したよう

+0

答えが役に立ったら、それを受け入れてください。そうすれば他の人にとっても役立ちます。 –

+0

ここにUserInfoとは何ですか?なぜ我々はこれをループでやっているのだろうか? –

+0

UserInfoはINTERFACEです。 これは、Firebaseプロジェクトのアプリケーションでのみ表示されます。私たちはfirebaseに複数のプロバイダを持っているので、これをループでやっています。私たちはすべてループしており、それをチェックするのはFacebookです。 –

0

マリク氏が指摘しているように、いつでもプロバイダのリストを確認できます。ただし、複数のプロバイダーを同じユーザーにリンクさせることができるので、複数のプロバイダーを持つ現在のユーザーのサインインメソッドを取得するには、IDトークンを確認する必要があります。トークンでfirebase.sign_in_providerのクレームをチェックする必要があります。 IDトークンを取得するために使用されるサインイン方法が表示されます。クライアント上で取得するには、getIdTokenを実行し、返されたJWTをJWTパーサーで解析する必要があります。

関連する問題