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?
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 !!
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!
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 .
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.
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
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.
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.
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:
Obtenir une clé d'API Google+ sur https://cloud.google.com/console
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 +
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.
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;
?>
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}]
}
où url
est une URL d'image accessible.