0

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.?

+0

Comme vous pouvez le voir utilisé le recommandé par cette contribution. : https://stackoverflow.com/questions/40570200/firebase-facebook-login-with-redirect-returning-null-email –

+0

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

Répondre

0

J'ai reçu le courrier à nouveau; Bien que par défaut, il devrait l'apporter à tous les comptes Facebook.

var provider = new firebase.auth.FacebookAuthProvider(); 
    provider.addScope('email'); 
    firebase.auth().signInWithPopup(provider) 
     .then(res => {...});