Dans mon tableau de bord Firebase j'ai défini plusieurs comptes pour une option email.
firebase dashboard
La configuration de Angularfire2 est la norme, donc je ne frappe pas le code de app.modules.ts
home.tsionic3 + firebase + angularfire2 facebook email null avec plusieurs comptes par adresse email
facebookir(){
let goPagePrehome:boolean = false;
let userDB:any;
firebase.auth().signInWithPopup(new firebase.auth.FacebookAuthProvider())
.then(res => {
console.log(res);
console.info(JSON.stringify(res));
this.userService.getUsers()
.forEach((users) => {
users.forEach((user) =>{
if(user['user_email'] == res.additionalUserInfo.profile.email){
// console.log('res.additionalUserInfo.profile.email');
// console.log(user);
userDB = user;
goPagePrehome= true;
}
});
if(goPagePrehome){
this.goNextPagePrehome(userDB);
}else{
this.singup();
}
});
}); }
Dans le code précédent, le courrier électronique de l'utilisateur est créé et vérifié dans notre base de données. Et est envoyé à l'enregistrement "this.singup();" Ou à la maison "this.goNextPagePrehome (userDB);"
sign.ts
this.afAuth.authState.subscribe(user => {
console.log('find user facebook 2');
console.log(user);
if (user){
if(user.providerData["0"].providerId == "facebook.com"){
if(this.userData['picture'] == '' || this.userData['picture'] == undefined || this.userData['picture']== null){
console.info('find user facebook 2 - si');
this.userData['name']=this.userData['username']= user.providerData["0"].displayName;
this.userData['email']= user.providerData["0"].email;
this.userData['picture']= user.providerData["0"].photoURL;
console.log(this.userData);
}
}
//this.envioCorreoFacebook();
} else {
console.info('find user facebook 2 - no');
}
});
Comme vous pouvez le voir dans les deux fichiers je vérifiais le courrier pour les données fournies par le fournisseur comme « ProviderData [ » 0 « ] » et « res.additionalUserInfo.profile. email".
La réponse est firebase:
firebase images
J'ai besoin de votre aide pour corriger ce problème que certains comptes facebook travailler avec firebase.?
Comme vous pouvez le voir utilisé le recommandé par cette contribution. : https://stackoverflow.com/questions/40570200/firebase-facebook-login-with-redirect-returning-null-email –
Il se peut que le compte Facebook n'ait pas d'adresse e-mail. Aussi pouvez-vous essayer de demander la portée de l'e-mail lorsque vous vous connectez avec Facebook? – bojeil