Mendapatkan url gambar profil Google+ dengan user_id

92

Saya tahu bahwa banyak API jejaring sosial menyediakan cara untuk membuat url ke gambar profil pengguna, menggunakan user_id atau nama pengguna mereka. Untuk Facebook terlihat seperti ini:

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

Sekarang apakah ada yang seperti ini untuk Google Plus? Atau cara lain untuk mendapatkan foto pengguna tanpa panggilan API ??

ArVan
sumber
3
Saya membuka permintaan fitur yang dapat Anda bintangi untuk mendapatkan pembaruan jika Google pernah menerapkannya. code.google.com/p/google-plus-platform/issues/detail?id=167
abraham
Inilah contoh untuk sebaliknya. Misalnya, menyematkan bakat StackOverflow Anda di Profil Google+ Anda: goo.gl/8EE4LT
Lorenz Lo Sauer

Jawaban:

100

Google telah mengubah kebijakan mereka sehingga cara lama untuk mendapatkan gambar profil Google tidak akan berfungsi sekarang, yang dulu

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

Cara baru untuk melakukan ini adalah

Minta URL

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

Itu akan memberikan url gambar profil Google dalam format json seperti yang diberikan di bawah ini

Respon:

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


Lebih banyak parameter dapat ditemukan untuk dikirim dengan URL yang mungkin Anda perlukan dari sini

Untuk lebih jelasnya Anda juga dapat memeriksa pertanyaan yang diberikan di mana saya telah menjawab untuk jenis masalah yang sama Bagaimana cara mendapatkan gambar pengguna melalui id pengguna di Google plus?

Selamat Coding !!

Deepak Goswami
sumber
1
Ini masih bukan pengalihan, tidak dapat digunakan dalam <img>tag
Kirill Kulakov
2
itu sebabnya disebutkan dalam format JSON jangan Anda mengerti, karena ada perubahan sehingga Anda tidak dapat mengharapkan semuanya berfungsi seperti sebelumnya @KirillKulakov
TheMohanAhuja
1
@rgoraya Anda tidak dapat meminta dalam panggilan API tetapi Anda pasti dapat menambahkan ukuran dengan URL gambar, yang Anda dapatkan sebagai.../-OkM...AANA/ltpH...as/photo.jpg?sz=512
TheMohanAhuja
1
saya mengalami kesalahan permintaan yang buruk, api apa yang harus saya aktifkan di konsol pengembang saya
Earwin delos Santos
3
adakah cara agar kita bisa mendapatkan gambar profil pengguna tanpa google plus api karena akan dihentikan di masa mendatang
Saurabh Verma
94

PEMBARUAN: Metode di bawah ini TIDAK BEKERJA sejak 2015

Dimungkinkan untuk mendapatkan gambar profil, dan Anda bahkan dapat mengatur ukurannya:

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

Contoh: Gambar profil saya, dengan ukuran disetel ke 100 piksel:

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

Penggunaan dengan tag gambar:

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

Semoga Anda berhasil!

Emil Stenström
sumber
1
Ya, saat ini tidak berfungsi, ada yang tahu apakah itu masalah sementara atau permanen?
Cecilia Abadie
1
Metode ini tidak lagi berfungsi. Memberikan kesalahan 404. Saya menguji di Chrome, Safari, FireFox.
Justin
2
Saya telah memperbarui jawaban untuk mencerminkan bahwa metode di atas tidak berfungsi pada beberapa hari yang lalu.
Emil Stenström
1
@CeciliaAbadie: Dapatkah Anda mengonfirmasi bahwa metode Anda masih berfungsi? Mencoba beberapa variasi tetapi tidak dapat membuatnya bekerja dengan id pengguna saya (lihat jawaban di atas). Bisakah kamu?
Emil Stenström
2
@rgoraya: Tetapi bagaimana Anda menghitung bagian xxxxxx secara otomatis?
Emil Stenström
47

PEMBARUAN: Google menghentikan dukungan untuk metode ini, yang sekarang mengembalikan kesalahan 404 (tidak ditemukan) .


Semua url ini mengambil gambar profil pengguna:

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}

Mereka mengalihkan ke url gambar yang sama yang Anda dapatkan dari Google API, tautan jelek seperti
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg

Yang paling sederhana adalah dengan langsung menggunakan seperti sumber gambar:

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

Jika tidak, untuk mendapatkan url yang sama persis dari panggilan Google API, Anda dapat membaca header gambar,
misalnya di PHP:

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

seperti yang dijelaskan dalam artikel Ambil Gambar Profil Google Plus menggunakan PHP .

Salvador
sumber
1
Tidak perlu membuat permintaan HTTP untuk setiap permintaan, lihat jawaban saya.
Emil Stenström
1
Apakah ini didokumentasikan di mana saja?
Jonas Alves
1
Meskipun ini berfungsi dengan sempurna, saya tidak akan melakukannya, karena google mungkin akan berhenti mendukung ini, karena saya tidak melihat dokumentasi resmi di mana pun
Lefteris
Saya telah menambahkan jawaban bukti lengkap di bawah
Erwan
Di bawah ini saya telah menambahkan solusi baru untuk mendapatkan gambar profil Google dengan id pengguna, yang tidak mengembalikan kesalahan 404, harap periksa.
Deepak Goswami
26

Pendekatan 1: (tidak lagi berfungsi)

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

Pendekatan 2: (setiap permintaan dihitung dalam batas kecepatan api Anda yaitu 10 ribu permintaan per hari, gratis)

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

dengan format respon berikut:

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

Pendekatan 3: (tidak membutuhkan kunci api)

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

dalam tanggapan json Anda mendapatkan properti bernama "gphoto $ thumbnail", yang berisi url gambar profil seperti berikut:

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

Anda mungkin melihat di url bagian "s64-c" yang berarti ukuran gambar menjadi 64, saya telah mencoba menggunakan nilai lain seperti "s100-c" dan berhasil. Juga jika Anda menghapus bagian "s64-c" dan menambahkan parameter "? Sz = 100", itu juga akan berfungsi seperti sekarang. Meskipun ini bukan cara yang baik untuk mendapatkan gambar profil pengguna gplus, tetapi keuntungannya adalah tidak memerlukan kunci api apa pun.

Masum
sumber
Di Approach2, apakah Anda sudah mengetahui cara menyetel ukuran gambar dengan panggilan API?
Maca
@Maca Anda harus mendapatkan respons api seperti ini: {"image": {"url": " lh5.googleusercontent.com/-keLR5zGxWOg/.../photo.jpg?sz=50 "}} dari tempat Anda dapat menyetel parameter sz untuk ukuran gambar yang berbeda
Masum
lol..google akan harus meretas setiap tautan gambar yang tersedia untuk umum untuk masuk ke dalam API mereka agar orang tidak punya pilihan selain mendapatkan kunci API.
pengguna1323136
2
Saya ingin tahu apakah ada yang seperti picasaweb tetapi Anda mendapatkan gambarnya langsung dari email dan bukan google +. Saya hanya memiliki kasus pengguna yang memiliki gambar di akun Gmail Anda tetapi tidak memiliki profil di Google+, dan tidak membawa gambar. Hanya bisa mendapatkan url seperti ini lh3.googleusercontent.com/-k10Va1BdzL8/AAAAAAAAAAA/AAAAAAAAAAA/…
jose920405
2
api picasaweb.google.com dihentikan dan akan dimatikan pada Jan 2019 developers.google.com/picasa-web
siddhesh
4

Jika Anda ingin menampilkan gambar profil untuk pengguna yang saat ini masuk, Anda bahkan tidak perlu mengetahui {user_id}. Cukup menggunakan https://plus.google.com/s2/photos/profile/mesaja sudah cukup.

Danny Ruijters
sumber
terima kasih, tapi sayangnya ini bukan untuk pengguna yang login saat ini
ArVan
Pertanyaannya adalah tentang mendapatkan gambar profil menggunakan user_id. Tidak dengan saya
makki
3

Anda bisa mendapatkan URL untuk gambar profil menggunakan metode people.get dari Google+ API. Itu memang membutuhkan perjalanan bolak-balik ekstra, tetapi merupakan cara paling andal untuk mendapatkan gambar.

Anda secara teknis juga dapat menggunakan URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}yang kemudian akan dialihkan ke URL final. {id}adalah ID pengguna Google atau salah satu nama pengguna Profil Google lama (masih ada untuk pengguna yang memilikinya, tapi saya rasa Anda tidak dapat membuat yang baru lagi). {size}adalah ukuran foto yang diinginkan dalam piksel. Saya hampir yakin ini bukan fitur yang terdokumentasi dan didukung, jadi saya tidak akan mengandalkannya untuk sesuatu yang penting karena dapat hilang kapan saja tanpa pemberitahuan. Tetapi untuk prototipe cepat atau aplikasi kecil satu kali, itu mungkin cukup.

Will Norris
sumber
Apakah ini didokumentasikan di mana saja?
Jonas Alves
ya, Justin sepertinya benar ... ini tidak lagi berfungsi.
Will Norris
2

mencoba mengakses url / s2 / profile / photo berfungsi untuk sebagian besar pengguna tetapi tidak semua.

Satu-satunya metode bukti lengkap adalah menggunakan API Google+. Anda tidak memerlukan otentikasi pengguna untuk meminta data profil publik, jadi ini metode yang agak sederhana:

  1. Dapatkan kunci API Google+ di https://cloud.google.com/console

  2. Buat permintaan GET sederhana ke: https://www.googleapis.com/plus/v1/people/+ <username>? Key =

Catat + sebelum nama pengguna. Jika Anda menggunakan ID pengguna sebagai gantinya (string digit yang panjang), Anda tidak memerlukan +

  1. Anda akan mendapatkan representasi JSON yang sangat lengkap dari data profil yang mencakup: "image": {"url": " https://lh4.googleusercontent.com/ ..... sisa url gambar .... "}
Erwan
sumber
2

Jika Anda menggunakan Flutter, Anda dapat mengaksesnya melalui people.googleapis.comtitik akhir, kode menggunakan google_sign_inpustaka

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

Anda akan mendapatkan sesuatu seperti

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

di mana urlurl gambar yang dapat diakses.

onmyway133
sumber
2

Google+ API lama telah ditutup mulai 7 Maret 2019. Perubahan pada rencana penghentian telah dibuat baru-baru ini yang dapat mengurangi pengaruhnya terhadap beberapa pengembang.

Michael de Oz
sumber
1

Mencoba segala kemungkinan .. di sini adalah bagian terakhir dari kode kerja. Semoga membantu seseorang yang mencarinya.

    <?
$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;
?>
suraj jain
sumber
-5

Jawaban sederhana: Tidak

Anda harus menanyakan API orang dan mengambil data image.url profil untuk mendapatkan foto. AFAIK tidak ada format default untuk url itu yang berisi ID pengguna.

Kolja
sumber
Anda yakin? Saya ingin tahu apakah mereka punya rencana untuk membuat hal seperti itu? Terima kasih.
ArVan
1
Jika Anda melihat profil yang berbeda dan melihat keluaran html, misalnya dengan "elemen pemeriksaan" di chrome, Anda akan melihat bahwa semuanya berbeda dan tidak berisi ID pengguna. Juga tidak ada di dokumen resmi.
Kolja
2
Itu IS mungkin, baik untuk mendapatkan gambar, dan mengatur ukuran tertentu untuk dicari. Lihat jawaban saya di bawah.
Emil Stenström
Itu tidak mungkin ketika pertanyaan dan jawaban ini diposting :)
ArVan