web-dev-qa-db-fra.com

Le champ de courrier électronique Facebook renvoie la valeur null (même si la permission "courrier électronique" est définie et acceptée)

Pour certains utilisateurs de notre application, le champ e-mail renvoie la valeur NULL même si l'utilisateur a accordé à l'e-mail l'accès à l'application . Lorsque nous vérifions le paramètre scope et la validité du jeton de l'utilisateur grâce à l'outil Debugger, tout est ok . L’email de permission a été accepté ..__ Mais, lorsque nous demandons à l’API Graph de l’email de l’utilisateur contenant le jeton d’utilisateur valide, il n’apparaît pas du tout.

Existe-t-il un moyen d'empêcher une application de recevoir son courrier électronique, même s'il l'autorisait?

Merci

47
Benjamin Naïm

J'ai eu le même problème et je pense avoir compris pourquoi: Si l'utilisateur a un email non confirmé dans Facebook (c'est-à-dire que Facebook lui a envoyé un mail de validation à l'adresse e-mail de l'utilisateur mais il n'a pas répondu) envoyer un courriel à votre application même s'il vous a donné les autorisations par courriel.

Donc, ce que j'ai fait est d'utiliser son email Facebook si l'utilisateur a un nom d'utilisateur (c'est-à-dire [email protected]).

90
ozba

J'ai le même problème. Cela fonctionne bien sur mon hôte local, j'utilise php SDK pour la connexion à Facebook et lorsque je soumets ma demande, il renvoie tous les champs tels que l'email, le nom de l'utilisateur, mais sur le serveur, il ne fonctionne pas. . J'ai fait beaucoup de R & D à ce sujet et j'ai la solution au problème. :)

$profile = $facebook->api('/me?fields=email,first_name,last_name');

si vous utilisez php-sdk, il suffit de passer des champs comme celui-ci, il retourne l’email, le prénom, etc., etc. .. Espère que cela fonctionne pour vous tous ... Merci.

9
user3020691

Facebook n'envoie pas l'e-mail si l'utilisateur s'est connecté avec son numéro de téléphone . Consultez les commentaires sur https://github.com/mkdynamic/omniauth-facebook/issues/61 pour plus d'informations.

7
user2468170

Tout ce que tu dois savoir:

1) Lien 1

Quelques raisons possibles: 

Pas d'adresse email sur le compte 

Aucune adresse e-mail confirmée sur le compte

Aucune adresse e-mail vérifiée sur le compte 

L'utilisateur a entré un point de contrôle de sécurité qui lui a demandé de reconfirmer son adresse électronique et ne l'a pas encore fait.

  • L'adresse email de l'utilisateur est inaccessible

  • Vous avez également besoin de la permission étendue 'email', même pour les utilisateurs qui ont une adresse e-mail valide, confirmée et accessible au dossier.

2) Lien 2

Notez que même si vous demandez une autorisation par courrier électronique, cela n’est pas garanti vous obtiendrez une adresse e-mail. Par exemple, si quelqu'un s'est inscrit pour Facebook avec un numéro de téléphone au lieu d'une adresse email, l'email le champ peut être vide.

3
gbk

Vous devez donner la permission d'email avec le bouton auth.

authButton.setReadPermissions(Arrays.asList("email"));
3
varghesekutty

Dans certains cas, Facebook peut ne pas avoir d'adresse électronique valide pour un utilisateur:

email: chaîne contenant une adresse email valide RFC822 - note: this le champ peut être nul si aucune adresse électronique n'est disponible pour l'utilisateur

voir https://developers.facebook.com/docs/reference/api/user/

2
J Starr

La solution @ozba n'est pas applicable car Facebook affiche désormais un message d'alerte lorsque l'utilisateur a une adresse e-mail non confirmée. Donc, si vous rencontrez ce problème, il est plus agréable que l'utilisateur se soit inscrit en utilisant le numéro de téléphone .Message when trying to access email

Quelques raisons possibles:

  • Pas d'adresse email sur le compte (seulement le numéro de téléphone)
  • Aucune adresse e-mail confirmée sur le compte
  • L'utilisateur a entré un point de contrôle de sécurité qui lui a demandé de reconfirmer son adresse électronique. Ce n'est pas encore fait. L'adresse électronique de l'utilisateur est inaccessible.

Vérifiez: https://developers.facebook.com/bugs/298946933534016

1
Priyanshu Chauhan

Facebook vous fournira l'identifiant de messagerie d'un utilisateur si et seulement cet utilisateur est associé à un identifiant de messagerie confirmée. Si votre application peut récupérer l'identifiant de messagerie pour certains utilisateurs, le problème ne concerne peut-être pas le développeur.

1
veena s kurup

J'ai lu les réponses précédentes mais si certaines d'entre elles sont vraies, par exemple si l'utilisateur n'a pas confirmé le courrier électronique mais un numéro de téléphone portable, cette erreur se produit souvent lorsque vous ignorez comment demander les informations à l'aide de FB api graph. Supposons que votre connexion a été établie avec succès et que vous disposez maintenant d'un jeton d'accès et d'un identifiant d'utilisateur, mais ne voyez toujours pas les courriers électroniques ni les autres champs qui vous intéressent. Continuez à utiliser cette demande après avoir confirmé le statut de connexion en tant que connecté:

FB.api(
  '/me',
  'GET',
  {"fields":"id,name,birthday,email,about,cover"},
  function(response) {
      // Insert your code here
  }
);

dépend des autorisations que vous avez demandées, vous pourrez maintenant obtenir des informations supplémentaires en fonction de vos besoins.

1
willyMon

Selon la documentation :

Remarque: même si vous demandez l'autorisation par courrier électronique, il n'est pas garanti que vous obtiendrez une adresse électronique. Par exemple, si une personne s'est inscrite pour Facebook avec un numéro de téléphone au lieu d'une adresse électronique, le champ de l'adresse électronique peut être vide.

Cela expliquerait pourquoi certains utilisateurs ont un e-mail null!

1
d-_-b

Vous avez besoin d'une autre permission de facebook.

inclure (about_me) la permission pour le paramètre dev Facebook et également dans votre application ou code.

0
Prasanna Anbu

vous pouvez essayer cela fonctionnera String email = user.getProperty ("email"). toString (); String safeEmail = user.asMap (). get ("email"). toString ();

0
Hari Haran