9
votes

Comment obtenir un avatar pour un utilisateur Gmail?

Je crée une application par e-mail dans React avec l'API Gmail. Je charge un tas de messages et je souhaite afficher les avatars des expéditeurs.

J'utilise ce package pour afficher les avatars. J'aimerais avoir un identifiant Google ou une URL d'image. Ce serait également bien de pouvoir obtenir des images pour d'autres services populaires, tels que Outlook et Yahoo Mail.

D'autres personnes ont posé la même question, mais toutes les réponses semblent utiliser l'API Picasa (qui est obsolète) ou l'API Google+ (qui sera obsolète).

EDIT: Oui, le package react-avatar prétend pouvoir trouver un avatar en fonction des données utilisateur fournies, mais tout ce qu'il fait avec l'e-mail est de trouver un Gravatar ce que beaucoup de gens n'ont pas.


6 commentaires

Peut-être pouvez-vous utiliser l'authentification Firebase?


@NoobTW Non merci. Je préfère m'en tenir à l'ancienne API Gmail, d'autant plus que nous en avons beaucoup construit. De plus, Firebase Auth prend-il même en charge les API Gmail? J'ai toujours pensé que c'était juste pour la connexion.


Cela ne vous donnera-t-il pas ce que vous voulez: developer.google .com / admin-sdk / répertoire / v1 / reference / users‌ /…


@LanceWhatley Je crois que l'API se limite à rechercher les utilisateurs d'un domaine G Suite particulier


@cody Oui, je pense que oui.


Il était auparavant disponible via l'API Google+, mais il a été arrêté pour des raisons de sécurité, voir: blog.google/technology/safety-security/project-strobe Il n'y a pas de moyen anonyme


5 Réponses :


9
votes

Ce que vous voulez faire n'est pas possible via l'API GMAIL ou toute autre API Google

Vous ne pouvez pas prendre une adresse e-mail Google et rechercher l'image ou toute autre information de profil personnel associée avec cette adresse e-mail via n'importe quel point de terminaison de l'API Google. Explication ci-dessous.

Obtenir une image de l'expéditeur d'un e-mail

L'API Gmail répertorie les e-mails qui ont été envoyés à et par un utilisateur. L'API gmail renvoie essentiellement la réponse au message électronique du serveur de messagerie au format MIME qui, si vous cochez, ne contient pas d'image de profil. Il ne vous renvoie pas l'image de l'expéditeur ou du destinataire.

Google ne dispose pas de point de terminaison que les développeurs peuvent utiliser pour rechercher sur une adresse e-mail gmail.com et renvoyer toute information de profil d'utilisateur (y compris l'image) serait contraire à la vie privée des utilisateurs. Un utilisateur devrait vous accorder la permission de voir son image et vous ne disposez pas de cette autorisation pour chaque utilisateur de Gmail qui pourrait envoyer des e-mails à votre utilisateur authentifié.

Le site Web de Gmail effectue probablement une sorte de vérification sur gmail adresses e-mail et met la photo en pièce jointe avec le compte. Google a accès aux données de profil de tous les utilisateurs de GMAIL, Google ne peut pas vous donner ce même accès car il serait contraire à la vie privée des utilisateurs. S'il ne s'agit pas d'un compte Gmail, ils peuvent vérifier Gravatar pour voir si une image a été configurée pour cette adresse e-mail. Encore une fois, vous n'avez aucun moyen de demander l'image d'un utilisateur Google en utilisant son adresse e-mail.

  • Vous pouvez consulter Gravatar pour voir s'il en a été configuré un pour cet e-mail
  • Si l'utilisateur authentifié a ajouté cet utilisateur en tant que contact et a ajouté une photo pour cet utilisateur, vous pourrez peut-être utiliser le API de personnes .

Dans le passé, j'ai recommandé aux utilisateurs de prendre comme image la première lettre de l'adresse e-mail des utilisateurs et de créer une image en utilisant cette lettre. Vous pouvez également utiliser un point d'interrogation qui est en fait ce que fait gmail lorsque son site Web ne peut pas trouver un e-mail de l'utilisateur probablement en vérifiant Gravatar.

 entrez la description de l'image ici p>

Obtenir l'image de l'utilisateur authentifié actuel

Vous pouvez obtenir ces informations sur le site people.get endpoint assurez-vous simplement que vous avez demandé la portée du profil à l'utilisateur lorsque vous les authentifiez

function getPicture() {
        gapi.client.people.people.get({
           'resourceName': 'people/me',
           'pageSize': 10,
           'personFields': 'photos',
         }).then(function(response) {
           var connections = response.result.connections;
           appendPre('Connections:');

           if (connections.length > 0) {
             for (i = 0; i < connections.length; i++) {
               var person = connections[i];
               if (person.url && person.url.length > 0) {
                 appendPre(person.names[0].url)
               } else {
                 appendPre("No display name found for connection.");
               }
             }
           } else {
             appendPre('No connections found.');
           }
         });
      }


7 commentaires

Je ne veux pas la photo de profil de l'utilisateur actuel, je veux obtenir une photo de profil basée sur l'adresse e-mail de quelqu'un. J'affiche une liste de courriels et je souhaite afficher leurs avatars.


Avez-vous essayé de passer par l'API Gravatar? Google ne vous donnera que les informations sur l'utilisateur actuellement authentifié.


Oui j'ai. Cela n'a pas vraiment beaucoup de résultats. Sinon, comment Gmail récupère-t-il les avatars?


Comme je l'ai dit, il n'y a aucun moyen d'obtenir les AVATARS gmail d'un utilisateur aléatoire. veuillez lire la section Obtenir l'image de l'expéditeur d'un e-mail


Est-ce que le -1 s'il vous plaît commenter. Expliquer en détail pourquoi quelque chose n'est pas possible n'est pas vraiment une raison valable pour une IMO -1


Ce n'est pas exactement ce que je recherchais, mais cela semble être la seule solution. Merci pour votre temps.


Malheureusement, tout n'est pas possible lorsqu'il s'agit de la confidentialité des utilisateurs. Même des choses qui semblent vraiment simples et une excellente idée à l'époque.



0
votes

Vous devez d'abord obtenir le md5 de l'e-mail, puis

var email = "youremail@gmail.com",
    size = 80; 
yourImg.src = 'http://www.gravatar.com/avatar/' + MD5(email) + '.jpg?s=' + size;

https://jsfiddle.net/a4g8s5y2/1/


1 commentaires

désolé ... je pensais que c'était juste des gravatars



4
votes

Je ne pense pas que Google partage ces informations avec qui que ce soit sans autorisation. Vous devez créer un profil pour chaque utilisateur et ne prendre l'image de profil qu'une seule fois lorsque l'utilisateur s'inscrit sur votre plateforme par le Google oauth Vérifiez ces informations https://developers.google.com/actions/identity/google- sign-in-oauth


0 commentaires

0
votes

Si vous souhaitez créer un avatar avec l'image de l'utilisateur, vous pouvez utiliser l'API de "pipl.com" (recherche de personnes). Voir https://pipl.com/api/ . Vous pouvez rechercher une certaine adresse e-mail.

Dans le modèle de tarification "social" et "professionnel", le résultat contient un tableau d'images. Vous pouvez tester cela avec un compte d'essai gratuit (30 requêtes).

considérez, après les 30 premières requêtes gratuites, vous devez créer un compte payant; les informations sur les prix sont disponibles sur leur page Web.


0 commentaires

2
votes

La réponse actuellement acceptée n'est pas tout à fait correcte, car il existe absolument une API Google qui expose les avatars de Gmail - ainsi que le prénom et / ou le nom de l'utilisateur, tant que l'utilisateur en a configuré publiquement.

Bien que je n'ai pas pu jusqu'à présent trouver le point de terminaison de l'API que vous pouvez utiliser pour y parvenir, je suis tombé sur avatarapi .com .

Comme indiqué sur leur site Web:

Cette API utilise les informations de profil public fournies par Google, via une source de données Google exposée publiquement pour déterminer le nom et l'image de profil de l'utilisateur.

Ils ont une solution de rechange à Gravatar. J'aimerais également savoir où se trouve cette "source de données Google" qu'ils utilisent.


1 commentaires

Cela ne marche pas. Je l'ai essayé avec mon adresse Gmail et tout ce que j'ai obtenu était une image de silhouette.