使用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文件数据,所以这是一个相当简单的方法:

  1. https://cloud.google.com/console上获取Google+ API密钥

  2. 提出简单的GET请求: https : //www.googleapis.com/plus/v1/people/+ <用户名>?key =

注意用户名之前的+号。 如果您使用用户ID(长数字的string),您不需要+

  1. 你会得到一个非常全面的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的默认格式。