많은 소셜 네트워크 API가 user_id 또는 사용자 이름을 사용하여 사용자의 프로필 사진에 대한 URL을 구성하는 방법을 제공한다는 것을 알고 있습니다. Facebook의 경우 다음과 같습니다.
http://graph.facebook.com/user_id/picture?type=square
이제 Google Plus에 이와 같은 것이 있습니까? 또는 API 호출없이 사용자의 사진을 얻는 다른 방법은 무엇입니까 ??
많은 소셜 네트워크 API가 user_id 또는 사용자 이름을 사용하여 사용자의 프로필 사진에 대한 URL을 구성하는 방법을 제공한다는 것을 알고 있습니다. Facebook의 경우 다음과 같습니다.
http://graph.facebook.com/user_id/picture?type=square
이제 Google Plus에 이와 같은 것이 있습니까? 또는 API 호출없이 사용자의 사진을 얻는 다른 방법은 무엇입니까 ??
답변:
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를 통해 사용자 이미지를 얻는 방법은 무엇입니까?
행복한 코딩 !!
<img>
태그
.../-OkM...AANA/ltpH...as/photo.jpg?sz=512
업데이트 : 아래 방법은 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">
작동하기를 바랍니다!
업데이트 : 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 : (더 이상 작동하지 않음)
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 키가 필요하지 않다는 것입니다.
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
Google+ API 의 people.get 메소드를 사용하여 프로필 이미지의 URL을 가져올 수 있습니다 . 추가 왕복이 필요하지만 이미지를 얻는 가장 안정적인 방법입니다.
기술적으로 URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}
을 사용 하여 최종 URL로 리디렉션 할 수도 있습니다 . {id}
Google 사용자 ID 또는 이전 Google 프로필 사용자 이름 중 하나입니다 (이를 보유한 사용자에게는 여전히 존재하지만 더 이상 새로 만들 수 없다고 생각합니다). {size}
원하는 사진 크기 (픽셀 단위)입니다. 나는 이것이 문서화되고 지원되는 기능 이 아니라는 것을 거의 확신 합니다. 그래서 언제라도 예고없이 사라질 수 있기 때문에 중요한 것에 의존하지 않을 것입니다. 그러나 빠른 프로토 타입이나 소규모 일회성 애플리케이션의 경우 충분할 수 있습니다.
/ s2 / profile / photo URL에 액세스하려는 시도는 대부분의 사용자에게 작동하지만 전부는 아닙니다.
유일한 완전한 증명 방법은 Google+ API를 사용하는 것입니다. 공개 프로필 데이터를 요청하는 데 사용자 인증이 필요하지 않으므로 간단한 방법입니다.
https://cloud.google.com/console 에서 Google+ API 키 받기
https://www.googleapis.com/plus/v1/people/+ <사용자 이름>? key =에 대한 간단한 GET 요청을 작성하십시오.
사용자 이름 앞에 +가 있습니다. 대신 사용자 ID (긴 숫자 문자열)를 사용하는 경우 +
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은 어디에 있습니까 ?
가능한 모든 것을 시도했습니다. 여기에 최종 작업 코드가 있습니다. 그것을 찾는 사람에게 도움이되기를 바랍니다.
<?
$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;
?>
간단한 대답 : 아니요
사진을 얻으려면 사람 API를 쿼리하고 프로필 image.url 데이터를 가져와야 합니다. AFAIK에는 사용자 ID가 포함 된 URL에 대한 기본 형식이 없습니다.