web-dev-qa-db-fra.com

Obtention de l'URL de l'image de profil Google+ avec user_id

Je sais que de nombreuses API de réseau social permettent de créer une URL pour la photo de profil d'un utilisateur, à l'aide de son ID utilisateur ou de son nom d'utilisateur. Pour Facebook, cela ressemble à ceci:

http://graph.facebook.com/user_id/picture?type=square

Existe-t-il quelque chose comme ceci pour Google Plus? Ou tout autre moyen d'obtenir la photo de l'utilisateur sans appel d'API?

88
ArVan

Google avait modifié sa politique. L'ancienne méthode d'obtention de l'image de profil Google ne fonctionnait plus, ce qui était

https://plus.google.com/s2/photos/profile/ (user_id)? sz = 15

La nouvelle façon de faire est

URL de demande

https://www.googleapis.com/plus/v1/people/115950284...320?fields=image&key={YOUR_API_KEY}

Cela donnera l’URL de l’image de profil Google au format JSON comme indiqué ci-dessous.

Réponse:

{
    "image": 
    {
         "url": "https://lh3.googleusercontent.com/-OkM...AANA/ltpH4BFZ2as/photo.jpg?sz=50"
    }
}


Vous pouvez trouver plus de paramètres à envoyer avec une URL dont vous pourriez avoir besoin ici

Pour plus de détails, vous pouvez également consulter la question à laquelle j'ai répondu pour le même type de problème Comment obtenir une image d'utilisateur via l'ID utilisateur dans Google plus?

Bonne codage !!

98
Deepak Goswami

MISE À JOUR: La méthode ci-dessous NE FONCTIONNE PAS depuis 2015

Il est possible d’obtenir la photo de profil, et vous pouvez même en définir la taille:

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>

Exemple: la photo de mon profil dont la taille est définie sur 100 pixels:

https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100

Utilisation avec une balise d'image:

<img src="https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100" width="100" height="100">

J'espère que ça marche!

93
Emil Stenström

UPDATE: Google a arrêté le support de cette méthode, qui renvoie maintenant une erreur 404 (introuvable) .


Toutes ces URL récupèrent la photo de profil d'un utilisateur:

https://www.google.com/s2/photos/profile/{user_id}
https://plus.google.com/s2/photos/profile/{user_id}
https://profiles.google.com/s2/photos/profile/{user_id}

Ils redirigent vers le même URL d'image que vous obtenez à partir de Google API, un lien laid
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg

Le plus simple est d'utiliser directement comme source d'image:

<img src="https://www.google.com/s2/photos/profile/{user_id}">

Sinon, pour obtenir exactement la même URL que celle d’un appel API Google, vous pouvez lire les en-têtes d’image,
par exemple en PHP:

$headers = get_headers("https://www.google.com/s2/photos/profile/{user_id}", 1);
echo "<img src=$headers[Location]>";

comme décrit dans l'article Récupérer une image de profil Google Plus à l'aide de PHP .

47
Salvador

approche 1: (ne fonctionne plus)

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>

approche 2: (chaque demande compte dans votre limite de taux d'api, soit 10 000 demandes par jour gratuitement)

https://www.googleapis.com/plus/v1/people/<user_id>?fields=image&key={YOUR_API_KEY}

avec le format de réponse suivant:

{ "image": { "url": "lh5.googleusercontent.com/-keLR5zGxWOg/.../photo.jpg?sz=50"; } }

approche 3: (ne nécessite pas de clé d'api)

http://picasaweb.google.com/data/entry/api/user/<user_id>?alt=json

dans la réponse JSON, vous obtenez une propriété nommée "gphoto $ thumbnail", qui contient l'URL de l'image de profil comme suit:

http://lh6.ggpht.com/-btLsReiDeF0/AAAAAAAAAAI/AAAAAAAAAAA/GXBpycNk984/s64-c/filename.jpg

Vous remarquerez peut-être dans l'URL la portion "s64-c" qui signifie que la taille de l'image est 64, j'ai essayé d'utiliser d'autres valeurs comme "s100-c" et elles ont fonctionné. De même, si vous supprimez la partie "s64-c" et ajoutez le paramètre "? Sz = 100", cela fonctionnera également à partir de maintenant. Bien que ce ne soit pas un très bon moyen d’obtenir la photo de profil d’un utilisateur gplus, l’avantage est qu’elle ne nécessite aucune clé d’API.

26
Masum

Google, aucune API requise:

$data = file_get_contents('http://picasaweb.google.com/data/entry/api/user/<USER_ID>?alt=json');
$d = json_decode($data);
$avatar = $d->{'entry'}->{'gphoto$thumbnail'}->{'$t'};

// Exemple de sortie: https://lh3.googleusercontent.com/-2N6fRg5OFbM/AAAAAAAAAAI/AAAAAAAAADE/2-RmpExH6iU/s64-c/photo.jpg

CHANGEMENT: le 64 "s64" pour la taille

10
Shawn Rebelo

Si vous souhaitez afficher la photo de profil de l'utilisateur actuellement connecté, vous n'avez même pas besoin de connaître le {user_id}. En utilisant simplement https://plus.google.com/s2/photos/profile/me sera suffisant.

5
Danny Ruijters

Vous pouvez obtenir l'URL de l'image de profil à l'aide de la méthode people.get de l'API Google+. Cela nécessite un aller-retour supplémentaire, mais c'est le moyen le plus fiable d'obtenir l'image.

Vous pouvez également utiliser l’URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size} qui sera ensuite redirigé vers l'URL finale. {id} est l'ID utilisateur Google ou l'un des anciens noms d'utilisateur Profils Google (ils existent toujours pour les utilisateurs qui en ont un, mais je ne pense pas que vous puissiez en créer de nouveaux). {size} est la taille souhaitée de la photo en pixels. Je suis presque sûr que ce n'est pas une fonctionnalité prise en charge, je ne m'appuierai donc pas dessus pour quelque chose d'important car elle pourrait disparaître à tout moment. sans préavis. Mais pour des prototypes rapides ou de petites applications uniques, cela peut être suffisant.

3
Will Norris

essayer d'accéder à l'URL/s2/profile/photo fonctionne pour la plupart des utilisateurs, mais pas pour tous.

La seule méthode de preuve complète consiste à utiliser l'API Google+. Vous n'avez pas besoin de l'authentification de l'utilisateur pour demander des données de profil public. C'est donc une méthode assez simple:

  1. Obtenir une clé d'API Google+ sur https://cloud.google.com/console

  2. Envoyez une simple requête GET à: https://www.googleapis.com/plus/v1/people/+ <nom d'utilisateur>? Key =

Notez le + avant le nom d'utilisateur. Si vous utilisez plutôt des identifiants utilisateur (la longue chaîne de chiffres), vous n'avez pas besoin du +

  1. vous obtiendrez une représentation JSON très complète des données de profil comprenant: "image": {"url": " https://lh4.googleusercontent.com/ ..... le reste de l'URL de l'image .... "}
2
Erwan

Les API Google+ héritées ont été arrêtées le 7 mars 2019. Des modifications ont récemment été apportées au plan de fermeture, ce qui peut atténuer ses effets sur certains développeurs.

2
Michael de Oz

Tout essayé possible .. voici la dernière pièce du code de travail. J'espère que ça aide quelqu'un qui le cherche.

    <?
$url='https://www.googleapis.com/plus/v1/people/116599978027440206136?fields=image%2Furl&key=MY_API_KEY&fields=image';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$d = json_decode($response);
$avatar_url = $d->{'image'}->{'url'};
echo $avatar_url;
?>
1
suraj jain

Si vous utilisez Flutter, vous pouvez y accéder via people.googleapis.com endpoint, le code utilise google_sign_in bibliothèque

import 'package:google_sign_in/google_sign_in.Dart';

Future<String> getPhotoUrl(GoogleSignInAccount account, String userId) async {
  // final authentication = await account.authentication;
  final url = 'https://people.googleapis.com/v1/people/${userId}?personFields=photos';
  final response = await http.get(
    url,
    headers: await account.authHeaders
  );

  final data = json.decode(response.body);
  return data['photos'].first['url'];
}

Vous obtiendrez quelque chose comme

{
  resourceName: people/998812322529259873423, 
  etag: %EgQBAzcabcQBAgUH, 
  photos: [{metadata: {primary: true, source: {type: PROFILE, id: 107721622529987673423}}, 
  url: https://lh3.googleusercontent.com/a-/abcdefmB2p1VWxLsNT9WSV0yqwuwo6o2Ba21sh_ra7CnrZ=s100}]
}

url est une URL d'image accessible.

0
onmyway133