Comment faire pour déterminer si un Firebase utilisateur est connecté à l'aide de facebook authentification
Je suis à l'aide de firebase de google et j'ai des soucis avec l'authentification de l'utilisateur. Après la connexion avec facebook je obtenir FirebaseUser dans AuthStateListener, mais comment puis-je détecter si l'utilisateur est connecté via facebook, ou différemment?
Mise à JOUR
Comme @Frank van Puffelen dit FirebaseAuth.getInstance().getCurrentUser().getProviderId()
devrait revenir "facebook", mais dans mon cas, il renvoie "firebase". Maintenant, je ne peux pas comprendre quelle est la raison de ce comportement. Quand je suis FacebookToken-je faire quelque chose comme ceci:
AuthCredential credential = FacebookAuthProvider.getCredential(facebookToken.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//If sign in fails, display a message to the user. If sign in succeeds
//the auth state listener will be notified and logic to handle the
//signed in user can be handled in the listener.
if (!task.isSuccessful()) {
}
}
});
Et afterthat avant onComplete() la méthode est appelée, mon AuthStateListener obtient utilisateur qui provider id n'est pas "facebook" comme il se doit. Suis-je en train de faire quelque chose de mal? J'ai suivi officiel de google la documentation
- Je crois que FirebaseUser.getProviderId() renverra "facebook.com" mais je ne peux pas tester mon application n'utilise pas facebook. Peut-être donner un essai si vous le pouviez?
- Regardez mes questions à jour, s'il vous plaît.
Vous devez vous connecter pour publier un commentaire.
Dans la version 3.x et plus tard, un seul utilisateur peut être connecté avec de multiples fournisseurs. Donc, il n'est plus le concept d'un seul fournisseur d'identité. En fait, lorsque vous composez le:
Il retournera toujours
firebase
.Pour détecter si l'utilisateur est connecté avec Facebook, vous devrez inspecter le fournisseur de données:
UserInfo
aurez en effet provider idfirebase
(comme il l'est pour la fusion de l'utilisateur). Mais la deuxième, dans mes tests ontgoogle.com
(j'ai utilisé Google fournisseur).Dans mon application, j'utilise Anonyme Firebase comptes. Lorsque je me connecte Firebase auth avec un Facebook compte ou le Compte Google que je suis vérification comme suit:
Il existe de l'information dans l'Intention de répondre.
Se référer à l'extrait de code suivant:
Le responseCode est soit "téléphone", "google.com", "facebook.com", ou "twitter.com".
Plus récente de la solution est la suivante:
Comme indiqué ici
et pour l'affichage dans la page