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?
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 !!
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!
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 .
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.
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
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.
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.
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:
Holen Sie sich einen Google+ API-Schlüssel unter https://cloud.google.com/console
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
Ä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.
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;
?>
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.