Google api 获取谷歌&x2B;用户id为的配置文件图片url
我知道,很多社交网络API都提供了一种方法,可以使用用户id或用户名构建指向用户个人资料图片的url。对于Facebook,它看起来是这样的:Google api 获取谷歌&x2B;用户id为的配置文件图片url,google-api,google-plus,Google Api,Google Plus,我知道,很多社交网络API都提供了一种方法,可以使用用户id或用户名构建指向用户个人资料图片的url。对于Facebook,它看起来是这样的: http://graph.facebook.com/user_id/picture?type=square 现在谷歌+(Google Plus)有这样的功能吗?或者任何其他无需API调用就能获取用户图片的方法???简单回答:否 您必须查询person API并获取个人资料数据才能获得照片。AFAIK没有包含用户ID的url的默认格式。您可以使用Googl
http://graph.facebook.com/user_id/picture?type=square
现在谷歌+(Google Plus)有这样的功能吗?或者任何其他无需API调用就能获取用户图片的方法???简单回答:否
您必须查询person API并获取个人资料数据才能获得照片。AFAIK没有包含用户ID的url的默认格式。您可以使用Google+API的方法获取配置文件图像的url。这确实需要额外的往返行程,但这是获得图像的最可靠方式
从技术上讲,您也可以使用URL
https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}
然后将重定向到最终URL{id}
是Google用户id或一个旧的Google配置文件用户名(对于拥有它们的用户,它们仍然存在,但我认为您不能再创建新的){size}
是照片所需的像素大小。我几乎可以肯定这不是一个文档化的、受支持的功能,所以我不会依赖它来做任何重要的事情,因为它可能会在任何时候不经通知就消失。但对于快速原型或小型一次性应用程序,这可能就足够了。更新:谷歌停止支持此方法,现在返回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/aai/aaaaaaaaa/ooSNulbLz8U/photo.jpg 最简单的方法是直接使用like图像源:
<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]>";
$headers=获取标题(“https://www.google.com/s2/photos/profile/{user_id}”,1);
回声“;
如文章所述。更新:以下方法自2015年起不再有效 可以获取配置文件图片,甚至可以设置其大小:
https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>
与图像标记一起使用:
<img src="https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100" width="100" height="100">
希望你能成功 如果要显示当前登录用户的配置文件图片,您甚至不需要知道{user_id}。只需使用
https://plus.google.com/s2/photos/profile/me
就足够了。尝试访问/s2/profile/photo url对大多数用户有效,但不是所有用户都有效
唯一完整的证明方法是使用Google+API。请求公共配置文件数据不需要用户身份验证,因此这是一种非常简单的方法:
谷歌已经改变了他们的政策,所以旧的获取谷歌个人资料图片的方式现在将不起作用 新的方法是 请求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发送更多参数 有关更多详细信息,您还可以查看我针对相同类型问题回答的给定问题
方法1:(不再有效) 方法3:(不需要api密钥) 您可能会注意到url中的“s64-c”部分,这意味着图像大小为64,我尝试过使用其他值,如“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'};
$data=file\u get\u contents('http://picasaweb.google.com/data/entry/api/user/?alt=json');
$d=json_解码($data);
$avatar=$d->{'entry'}->{'gphoto$thumbnail'}->{'t'};
//输出示例:
更改:尺寸为“s64”的64尝试了所有可能的方法。。这是最后一段工作代码。希望它能帮助正在寻找它的人
<?
$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;
?>
如果您使用flatter,那么您可以通过
people.googleapis.com
端点访问它,code使用库中的谷歌签名
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'];
}
其中url
是一个可访问的图像url。2020解决方案
请评论,如果不再可用
以便从经过身份验证的用户处获取配置文件URL
GET https://people.googleapis.com/v1/people/[THE_USER_ID_OF_THE_AUTHENTICATED_USER]?personFields=photos&key=[YOUR_API_KEY] HTTP/1.1
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
答复:
{
"resourceName": "people/[THE_USER_ID_OF_THE_AUTHENTICATED_USER]",
"etag": "12345",
"photos": [
{
"metadata": {
"primary": true,
"source": {
"type": "PROFILE",
"id": "[THE_USER_ID_OF_THE_AUTHENTICATED_USER]"
}
},
"url": "https://lh3.googleusercontent.com/a-/blablabla=s100"
}
]
}
该链接可用于:
<img src="https://lh3.googleusercontent.com/a-/blablabla=s100">
你确定吗?我想知道他们是否有计划做这样的事情?无论如何,谢谢。如果你看不同的配置文件,看html输出,例如chrome中的“inspect element”,你会发现它们都是不同的,不包含用户ID。此外,官方文件上没有任何内容。这是可能的,既可以获取图像,也可以设置要查找的特定大小。请看下面我的答案。当问题和答案贴在哪里时,这是不可能的:)我打开了一个功能请求,如果谷歌实现了它,你可以启动它来获取更新。这里有一个相反的例子。例如,将你的StackOverflow天赋嵌入到你的Google+个人资料中:这个问题的答案自2012年以来改变了太多次。我在2020年发布了一个有效的答案——不知道需要多长时间:)无需为每个请求发出HTTP请求,请参阅我的答案。这有任何记录吗?虽然这非常有效,但我不会这样做,因为谷歌可能会停止支持这一点,因为我没有
$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'};
<?
$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;
?>
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}]
}
GET https://people.googleapis.com/v1/people/[THE_USER_ID_OF_THE_AUTHENTICATED_USER]?personFields=photos&key=[YOUR_API_KEY] HTTP/1.1
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
{
"resourceName": "people/[THE_USER_ID_OF_THE_AUTHENTICATED_USER]",
"etag": "12345",
"photos": [
{
"metadata": {
"primary": true,
"source": {
"type": "PROFILE",
"id": "[THE_USER_ID_OF_THE_AUTHENTICATED_USER]"
}
},
"url": "https://lh3.googleusercontent.com/a-/blablabla=s100"
}
]
}
<img src="https://lh3.googleusercontent.com/a-/blablabla=s100">