使用user_id获取Google+个人资料照片url
我知道很多社交networkingAPI提供了一种方法,使用他们的用户标识或用户名来构build用户的个人资料图片的url。 对于Facebook,它看起来像这样:
http://graph.facebook.com/user_id/picture?type=square
Google Plus现在有这样的东西吗? 或者没有任何其他方式获取用户的图片没有API调用?
谷歌已经改变了他们的政策,所以旧的获取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发送
对于更多的细节,你也可以检查给定的问题,我已经回答了相同types的问题如何获得用户图像通过用户ID在谷歌加?
快乐编码!
更新:自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">
希望你得到它的工作!
更新: 谷歌停止支持这种方法,现在返回一个404(未find)错误 。
所有这些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}
他们redirect到您从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 Plusconfiguration文件图片所述 。
方法1 🙁不再有效)
https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>
方法2 🙁每个请求计入您的api速率限制,即每天免费提供10k个请求)
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”的属性,其中包含如下所示的configuration文件图片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键。
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的大小
如果要显示当前login的用户的个人资料图片,则甚至不需要知道{user_id}。 只需使用https://plus.google.com/s2/photos/profile/me
。
您可以使用Google+ API的people.get方法获取个人资料图片的url。 这确实需要额外的往返,但是获得图像的最可靠的方式。
您在技术上也可以使用urlhttps://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size}
,然后将其redirect到最终到达url。 {id}
是Google用户标识或旧的Google个人资料用户名(它们对于拥有这些用户的用户仍然存在,但我认为您不能再创build新用户)。 {size}
是以像素为单位的照片所需的尺寸。 我几乎可以肯定,这不是一个logging,支持的function,所以我不会依赖它的任何重要,因为它随时可能消失,恕不另行通知。 但是对于快速原型或小型一次性应用程序,这可能就足够了。
试图访问/ s2 /个人资料/照片url适用于大多数用户,但不是全部。
唯一充分的certificate方法是使用Google+ API。 您不需要用户身份validation来请求公共configuration文件数据,所以这是一个相当简单的方法:
-
提出简单的GET请求: https : //www.googleapis.com/plus/v1/people/+ <用户名>?key =
注意用户名之前的+号。 如果您使用用户ID(长数字的string),您不需要+
- 你会得到一个非常全面的JSON表示的个人资料,其中包括:“图片”:{“url”:“ https://lh4.googleusercontent.com/ …..其余的图片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没有包含用户标识的URL的默认格式。