wake-up-neo.com

Google+ Profilbild-URL mit user_id abrufen

Ich weiß, dass viele soziale Netzwerk-APIs eine Möglichkeit bieten, eine URL zum Profilbild eines Benutzers mithilfe seiner Benutzer-ID oder seines Benutzernamens zu erstellen. Bei Facebook sieht es so aus:

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

Gibt es jetzt so etwas für Google Plus? Oder eine andere Möglichkeit, das Bild des Benutzers ohne einen API-Aufruf zu erhalten?

88
ArVan

Google hatte seine Richtlinien geändert, sodass die alte Methode zum Abrufen des Google-Profilbilds jetzt nicht mehr funktioniert

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

Neue Methode dafür ist

URL anfordern

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

Dadurch wird die URL des Google-Profilbilds im unten angegebenen JSON-Format angezeigt

Antwort :

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


Weitere Parameter können mit der URL gesendet werden, die Sie möglicherweise von hier benötigen

Für weitere Informationen können Sie auch die angegebene Frage überprüfen, auf die ich für dieselbe Art von Problem geantwortet habe Wie erhalte ich ein Nutzerbild über die Nutzer-ID in Google Plus?

Happy Coding !!

98
Deepak Goswami

PDATE: Die unten stehende Methode funktioniert nicht seit 2015

Es ist möglich, das Profilbild abzurufen, und Sie können sogar die Größe festlegen:

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

Beispiel: Mein Profilbild mit einer Größe von 100 Pixel:

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

Verwendung mit einem Bild-Tag:

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

Hoffe, Sie bekommen es zum Laufen!

93
Emil Stenström

UPDATE: Google hat die Unterstützung für diese Methode eingestellt und gibt nun einen 404-Fehler (nicht gefunden) zurück .


Alle diese URLs rufen das Profilbild eines Benutzers ab:

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}

Sie leiten zu derselben Bild-URL weiter, die Sie von der Google-API erhalten, einem hässlichen Link wie
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAA/ooSNulbLz8U/photo.jpg

Am einfachsten ist es, direkt eine ähnliche Bildquelle zu verwenden:

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

Andernfalls können Sie Bildheader lesen, um genau die gleiche URL eines Google API-Aufrufs zu erhalten.
zum Beispiel in PHP:

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

wie im Artikel beschrieben Google Plus-Profilbild mit PHP abrufen .

47
Salvador

Ansatz 1: (funktioniert nicht mehr)

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

Ansatz 2: (jede Anfrage zählt in Ihrem Api-Ratenlimit, das 10.000 Anfragen pro Tag kostenlos ist)

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

mit folgendem Antwortformat:

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

Ansatz 3: (Api-Schlüssel nicht erforderlich)

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

in der JSON-Antwort erhalten Sie eine Eigenschaft mit dem Namen "gphoto $ thumbnail", die die folgende Profilbild-URL enthält:

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

Sie können in der URL den Teil "s64-c" bemerken, was bedeutet, dass die Bildgröße 64 ist. Ich habe versucht, andere Werte wie "s100-c" zu verwenden, und sie haben funktioniert. Auch wenn Sie den Teil "s64-c" entfernen und den Parameter "? Sz = 100" anhängen, funktioniert dies ab sofort. Dies ist zwar kein guter Weg, um das Profilbild eines gplus-Benutzers zu erhalten, aber der Vorteil ist, dass kein API-Schlüssel erforderlich ist.

26
Masum

Google, keine API erforderlich:

$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'};

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

ÄNDERUNG: die 64 in "s64" für die Größe

10
Shawn Rebelo

Wenn Sie das Profilbild für den aktuell angemeldeten Benutzer anzeigen möchten, müssen Sie nicht einmal die {user_id} kennen. Einfach mit https://plus.google.com/s2/photos/profile/me wird genug sein.

5
Danny Ruijters

Sie können die URL für das Profilbild mit der Methode people.get der Google+ API abrufen. Dies erfordert eine zusätzliche Hin- und Rückfahrt, ist jedoch der zuverlässigste Weg, um das Bild zu erhalten.

Sie können technisch auch die URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}, das dann zur endgültigen URL umleitet. {id} ist die Google-Nutzer-ID oder einer der alten Nutzernamen von Google-Profilen (diese existieren noch für Nutzer, die sie hatten, aber ich glaube, Sie können keine neuen mehr erstellen). {size} ist die gewünschte Größe des Fotos in Pixel. Ich bin mir fast sicher, dass dies nicht eine dokumentierte, unterstützte Funktion ist, daher würde ich mich bei wichtigen Dingen nicht darauf verlassen, da sie jederzeit ohne Vorankündigung entfernt werden kann. Für schnelle Prototypen oder kleine Einzelanwendungen kann dies jedoch ausreichend sein.

3
Will Norris

der Versuch, auf die URL/s2/profile/photo zuzugreifen, funktioniert für die meisten Benutzer, jedoch nicht für alle.

Die einzige vollständige Beweismethode ist die Verwendung der Google+ API. Sie benötigen keine Benutzerauthentifizierung, um öffentliche Profildaten anzufordern. Dies ist also eine recht einfache Methode:

  1. Holen Sie sich einen Google+ API-Schlüssel unter https://cloud.google.com/console

  2. Senden Sie eine einfache GET-Anfrage an: https://www.googleapis.com/plus/v1/people/+ <Benutzername>? Key =

Beachten Sie das + vor dem Benutzernamen. Wenn Sie stattdessen Benutzer-IDs (die lange Zeichenfolge) verwenden, benötigen Sie das + nicht

  1. sie erhalten eine sehr umfassende JSON-Darstellung der Profildaten, die Folgendes enthält: "image": {"url": " https://lh4.googleusercontent.com/ ..... den Rest von die Bild-URL .... "}
2
Erwan

Ältere Google+ APIs wurden zum 7. März 2019 heruntergefahren. Vor kurzem wurden Änderungen am Plan zum Herunterfahren vorgenommen, die möglicherweise die Auswirkungen auf einige Entwickler verringern.

2
Michael de Oz

Versucht alles Mögliche .. hier ist das letzte Stück des Arbeitscodes. Hoffe es hilft jemandem, der danach sucht.

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

Wenn Sie Flutter verwenden, können Sie über den Endpunkt people.googleapis.com Darauf zugreifen. Code verwendet die Bibliothek google_sign_in

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'];
}

Sie werden so etwas bekommen

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

dabei ist url eine barrierefreie Bild-URL.

0
onmyway133