Получение URL-адреса профиля Google+ с помощью user_id - PullRequest
87 голосов
/ 03 февраля 2012

Я знаю, что многие API социальных сетей предоставляют способ создания URL-адреса для изображения профиля пользователя, используя его идентификатор_пользователя или имя пользователя.Для Facebook это выглядит так:

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

Теперь есть что-то подобное для Google Plus?Или любой другой способ получить картинку пользователя без вызова API ??

Ответы [ 12 ]

98 голосов
/ 20 марта 2014

Google изменил свою политику, поэтому старый способ получения изображения профиля Google теперь не работает, который был

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

Новый способ сделать это

Запрос URL

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

Это даст URL-адрес изображения профиля Google в формате json, как показано ниже

Ответ:

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


Можно найти дополнительные параметры для отправки с URL-адресом, который вам может понадобиться, здесь

Для более подробной информации вы также можете проверить данный вопрос, на который я ответилдля проблемы такого же типа Как получить изображение пользователя через идентификатор пользователя в Google plus?

Happy Coding !!

93 голосов
/ 27 июня 2012

ОБНОВЛЕНИЕ: описанный ниже метод НЕ РАБОТАЕТ с 2015 года

Возможно получить изображение профиля, и вы даже можете установить его размер:

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

Пример: изображение моего профиля размером 100 пикселей:

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

Использование с тегом изображения:

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

Надеюсь, у вас все получится!

47 голосов
/ 15 мая 2012

ОБНОВЛЕНИЕ: Google прекратил поддержку этого метода, который теперь возвращает ошибку 404 (не найдена) .


Все эти URL-адреса получают изображение профиля пользователя:

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}

Они перенаправляют на тот же URL-адрес изображения, который вы получаете из API Google, - некрасивую ссылку как
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.j

Самое простое - использовать напрямую как источник изображения:

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

В противном случае, чтобы получить точно такой же URL-адрес вызова API Google, вы можете прочитать заголовки изображений, например
в PHP:

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

, как описано в статье Получить изображение профиля Google Plus с помощью PHP .

26 голосов
/ 24 марта 2014

Подход 1: (больше не работает)

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

Подход 2: (каждый запрос учитывается в предельных скоростях вашего API, что составляет 10 000 запросов в деньбесплатно)

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

со следующим форматом ответа:

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

Подход 3: (не требуется ключ API)

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

в ответе json вы получите свойство с именем "gphoto $ thumbnail", которое содержит URL-адрес изображения профиля, например:

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

В URL-адресе вы можете заметить часть "s64-c", что означаетразмер изображения должен быть 64, я попытался использовать другие значения, такие как «s100-c», и они работали.Также, если вы удалите часть "s64-c" и добавите параметр "? Sz = 100", это также будет работать на данный момент.Хотя это не очень хороший способ получить изображение профиля пользователя gplus, но преимущество в том, что он не требует использования ключа API.

10 голосов
/ 04 апреля 2014

Google, API не требуется:

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

// Пример выходов: https://lh3.googleusercontent.com/-2N6fRg5OFbM/AAAAAAAAAAI/AAAAAAAAADE/2-RmpExH6iU/s64-c/photo.jpg

ИЗМЕНЕНИЕ: 64 в "s64" для размера

5 голосов
/ 13 января 2013

Если вы хотите показать фотографию профиля для текущего пользователя, который вошел в систему, вам даже не нужно знать {user_id}.Достаточно просто использовать https://plus.google.com/s2/photos/profile/me.

3 голосов
/ 15 февраля 2012

Вы можете получить URL для изображения профиля, используя метод people.get API Google+. Это требует дополнительной поездки туда и обратно, но это самый надежный способ получить изображение.

Технически вы также можете использовать URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}, который затем будет перенаправлен на окончательный URL. {id} - это идентификатор пользователя Google или одно из старых имен пользователей профилей Google (они все еще существуют для пользователей, у которых они были, но я не думаю, что вы сможете создавать новые). {size} - желаемый размер фотографии в пикселях. Я почти уверен, что это , а не документированная, поддерживаемая функция, поэтому я бы не стал полагаться на нее в отношении чего-либо важного, поскольку она может исчезнуть в любое время без уведомления. Но для быстрых прототипов или небольших одноразовых приложений этого может быть достаточно.

2 голосов
/ 03 апреля 2019

Устаревшие API Google+ были закрыты с 7 марта 2019 года. Недавно были внесены изменения в план закрытия, которые могут снизить его влияние на некоторых разработчиков.

2 голосов
/ 10 декабря 2013

Попытка получить доступ к / s2 / profile / photo url работает для большинства пользователей, но не для всех.

Единственный метод полной проверки - использовать Google+ API.Вам не требуется аутентификация пользователя для запроса данных общего профиля, поэтому это довольно простой метод:

  1. Получить ключ API Google+ на https://cloud.google.com/console

  2. Сделатьпростой запрос GET: https://www.googleapis.com/plus/v1/people/+< имя пользователя>? ключ =

Запишите + перед именем пользователя.Если вместо этого вы используете идентификаторы пользователей (длинную строку цифр), вам не нужно +

  1. , вы получите очень полное представление данных профиля в формате JSON, которое включает в себя: "изображение": {"url": "https://lh4.googleusercontent.com/..... url остальной части картинки ...."}
1 голос
/ 15 июня 2015

Перепробовал все возможное .. вот последний кусок рабочего кода.Надеюсь, это поможет тому, кто его ищет.

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