user_id로 Google+ 프로필 사진 URL 가져 오기


92

많은 소셜 네트워크 API가 user_id 또는 사용자 이름을 사용하여 사용자의 프로필 사진에 대한 URL을 구성하는 방법을 제공한다는 것을 알고 있습니다. Facebook의 경우 다음과 같습니다.

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

이제 Google Plus에 이와 같은 것이 있습니까? 또는 API 호출없이 사용자의 사진을 얻는 다른 방법은 무엇입니까 ??


3
Google에서 구현하는 경우 업데이트를 받기 위해 별표를 표시 할 수있는 기능 요청을 열었습니다. code.google.com/p/google-plus-platform/issues/detail?id=167
abraham

여기에 다른 방법의 예가 있습니다. 예를 들어 Google+ 프로필에 StackOverflow 감각 삽입 : goo.gl/8EE4LT
Lorenz Lo Sauer

답변:


100

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}

그러면 아래와 같이 json 형식의 Google 프로필 이미지 URL이 제공됩니다.

응답 :

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


여기 에서 필요할 수있는 URL과 함께 보낼 더 많은 매개 변수를 찾을 수 있습니다.

자세한 내용은 동일한 유형의 문제에 대해 답변 한 주어진 질문을 확인할 수도 있습니다. Google plus에서 사용자 ID를 통해 사용자 이미지를 얻는 방법은 무엇입니까?

행복한 코딩 !!


1
그것은이 내에서 사용할 수없는, 여전히 리디렉션되지 않습니다 <img>태그
키릴 쿨라 코브을

2
그것이 JSON 형식으로 언급 된 이유입니다. 변경 사항이 있으므로 모든 것이 이전에 따라 작동 할 것으로 기대할 수 없기 때문에 @KirillKulakov
TheMohanAhuja

1
@rgoraya 당신은 API 호출에 요청할 수 없습니다하지만 당신은 확실히 당신이뿐만 가지고 있음을, 이미지 URL과 크기를 추가 할 수 있습니다.../-OkM...AANA/ltpH...as/photo.jpg?sz=512
TheMohanAhuja

1
내가 잘못된 요청 오류를 가지고, 어떤 API를하는 것은 내가 내 개발자 콘솔에 사용하도록 설정해야합니다
Earwin 델로스 산토스

3
그것은 미래에 더 이상 사용되지 않습니다 때문에 우리는 구글 플러스 API를하지 않고 사용자의 프로필 사진을 얻을 수있는 방법이있다
사우 라브 베르 마

94

업데이트 : 아래 방법은 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">

작동하기를 바랍니다!


1
예, 지금 작동하지 않습니다. 일시적인 문제인지 영구적 인 문제인지 아는 사람이 있습니까?
Cecilia Abadie 2014 년

1
이 방법은 더 이상 작동하지 않습니다. 404 오류를 제공합니다. Chrome, Safari, FireFox에서 테스트했습니다.
Justin

2
며칠 전부터 위의 방법이 작동하지 않는다는 것을 반영하여 답변을 업데이트했습니다.
Emil Stenström 2014 년

1
@CeciliaAbadie : 방법이 여전히 작동하는지 확인할 수 있습니까? 여러 변형을 시도했지만 내 사용자 ID로 작동하지 못했습니다 (위의 답변 참조). 너는 할수 있니?
Emil Stenström

2
@rgoraya :하지만 xxxxxx 부분을 자동으로 계산하는 방법은 무엇입니까?
Emil Stenström

47

업데이트 : 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}

Google API에서 가져온 것과 동일한 이미지 URL,
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg 와 같은 추악한 링크로 리디렉션됩니다.

가장 간단한 방법은 다음과 같은 이미지 소스를 직접 사용하는 것입니다.

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

그렇지 않으면 Google API 호출의 정확히 동일한 URL을 얻으려면 이미지 헤더를 읽을 수 있습니다 (
예 : PHP).

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

PHP를 사용하여 Google Plus 프로필 사진 가져 오기 문서에 설명 된대로 .


1
각 요청에 대해 HTTP 요청을 할 필요가 없습니다. 내 대답을 참조하십시오.
에밀 Stenström

1
문서화되어 있습니까?
Jonas Alves 2013 년

1
이것이 완벽하게 작동하지만, 나는 공식 문서를 볼 수 없기 때문에 구글이 단순히 이것을 지원하는 것을 중단 할 수 있기 때문에 이런 식으로 가지 않을 것입니다
Lefteris

나는 완전한 증거 답변 아래에 추가 한
유안

아래에 사용자 ID로 Google 프로필 이미지를 얻는 새로운 솔루션을 추가했습니다. 이는 404 오류를 반환하지 않습니다.
Deepak Goswami

26

접근 방식 1 : (더 이상 작동하지 않음)

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

접근 방식 2 : (각 요청은 무료로 하루에 10,000 개 요청 인 API 속도 제한에 포함됩니다.)

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 응답에서 다음과 같은 프로필 사진 URL을 포함하는 "gphoto $ thumbnail"이라는 속성을 얻습니다.

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

URL에서 이미지 크기가 64라는 것을 의미하는 "s64-c"부분을 볼 수 있습니다. "s100-c"와 같은 다른 값을 사용해 보았고 작동했습니다. 또한 "s64-c"부분을 제거하고 "? sz = 100"매개 변수를 추가하면 지금도 작동합니다. 이것은 gplus 사용자의 프로필 사진을 얻는 좋은 방법은 아니지만 장점은 API 키가 필요하지 않다는 것입니다.


Approach2에서 API 호출로 이미지 크기를 설정하는 방법을 알아 냈습니까?
Maca

@Maca 다음과 같은 API 응답을 받아야합니다. { "image": { "url": " lh5.googleusercontent.com/-keLR5zGxWOg/.../photo.jpg?sz=50 "}} 여기서 설정할 수 있습니다. 다른 이미지 크기의 SZ 매개 변수
Masum

lol..google은 공개적으로 사용 가능한 모든 이미지 링크를 해킹하여 사람들이 API 키를 얻을 수밖에 없도록 API 아래에 있어야합니다.
user1323136

2
picasaweb과 같은 것이 있는지 궁금하지만 Google +가 아닌 이메일에서 직접 사진을 얻습니다. Gmail 계정에 이미지가 있지만 google +에 프로필이없고 이미지를 가져 오지 않는 사용자의 경우가 있습니다. 다음과 같은 URL 만 가져올 수 있습니다. lh3.googleusercontent.com/-k10Va1BdzL8/AAAAAAAAAAA/AAAAAAAAAAA/…
jose920405

2
picasaweb.google.com api는 가격이 책정되었으며 2019 년 1 월에 의해 사용 중지 될 예정입니다. developers.google.com/picasa-web
siddhesh

11

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

변경 : 크기에 대한 "s64"의 64


1
괜찮지 만 아바타가 기본값이거나 실제 사용자가 업로드 한 경우에는 반환되지 않습니다.
Miguel

4

현재 로그인 한 사용자의 프로필 사진을 표시하려는 경우 {user_id}를 몰라도됩니다. 단순히 사용 https://plus.google.com/s2/photos/profile/me하면 충분합니다.


감사합니다,하지만 불행히도 그것은 전류 아니다는 로그인 한 사용자
ArVan

질문은 user_id를 사용하여 프로필 사진을 얻는 것에 관한 것이 었습니다. 아니와
makki

3

Google+ API 의 people.get 메소드를 사용하여 프로필 이미지의 URL을 가져올 수 있습니다 . 추가 왕복이 필요하지만 이미지를 얻는 가장 안정적인 방법입니다.

기술적으로 URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}을 사용 하여 최종 URL로 리디렉션 할 수도 있습니다 . {id}Google 사용자 ID 또는 이전 Google 프로필 사용자 이름 중 하나입니다 (이를 보유한 사용자에게는 여전히 존재하지만 더 이상 새로 만들 수 없다고 생각합니다). {size}원하는 사진 크기 (픽셀 단위)입니다. 나는 이것이 문서화되고 지원되는 기능 이 아니라는 것을 거의 확신 합니다. 그래서 언제라도 예고없이 사라질 수 있기 때문에 중요한 것에 의존하지 않을 것입니다. 그러나 빠른 프로토 타입이나 소규모 일회성 애플리케이션의 경우 충분할 수 있습니다.


문서화되어 있습니까?
Jonas Alves

네, 저스틴이 옳은 것 같습니다. 더 이상 작동하지 않습니다.
Will Norris 2014 년

2

/ s2 / profile / photo URL에 액세스하려는 시도는 대부분의 사용자에게 작동하지만 전부는 아닙니다.

유일한 완전한 증명 방법은 Google+ API를 사용하는 것입니다. 공개 프로필 데이터를 요청하는 데 사용자 인증이 필요하지 않으므로 간단한 방법입니다.

  1. https://cloud.google.com/console 에서 Google+ API 키 받기

  2. https://www.googleapis.com/plus/v1/people/+ <사용자 이름>? key =에 대한 간단한 GET 요청을 작성하십시오.

사용자 이름 앞에 +가 있습니다. 대신 사용자 ID (긴 숫자 문자열)를 사용하는 경우 +

  1. "image": { "url": " https://lh4.googleusercontent.com/ ..... 나머지 사진 url .... 을 포함하는 프로필 데이터의 매우 포괄적 인 JSON 표현을 얻을 수 있습니다 . "}

2

Flutter를 사용하는 경우 people.googleapis.com엔드 포인트 를 통해 액세스 할 수 있으며 코드는 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'];
}

당신은 다음과 같은 것을 얻을 것입니다

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

url액세스 가능한 이미지 URL은 어디에 있습니까 ?


2

기존 Google+ API는 2019 년 3 월 7 일부로 종료되었습니다. 최근에 종료 계획이 변경되어 일부 개발자에게 미치는 영향을 완화 할 수 있습니다.


1

가능한 모든 것을 시도했습니다. 여기에 최종 작업 코드가 있습니다. 그것을 찾는 사람에게 도움이되기를 바랍니다.

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

-5

간단한 대답 : 아니요

사진을 얻으려면 사람 API를 쿼리하고 프로필 image.url 데이터를 가져와야 합니다. AFAIK에는 사용자 ID가 포함 된 URL에 대한 기본 형식이 없습니다.


확실해? 그런 걸 만들 계획이 있을까? 어쨌든 감사합니다.
ArVan 2012

1
다른 프로필을보고 예를 들어 크롬에서 "inspect element"를 사용하여 html 출력을 보면 모두 다르며 userID가 포함되어 있지 않다는 것을 알 수 있습니다. 또한 공식 문서에는 아무것도 없습니다.
Kolja 2012

2
이미지를 가져 와서 찾을 특정 크기를 설정할 수 있습니다. 아래 내 대답을 참조하십시오.
에밀 Stenström

질문 과이 답변이 게시되었을 때 불가능했습니다 :)
ArVan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.