使用user_id获取Google+个人资料图片网址

ArV*_*Van 89 google-api google-plus

我知道很多社交网络API提供了一种使用user_id或用户名构建用户个人资料图片网址的方法.对于Facebook,它看起来像这样:

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

现在Google Plus有这样的东西吗?或者任何其他方式在没有API调用的情况下获取用户的图片?

Dee*_*ami 98

谷歌已经改变了他们的政策,因此获取谷歌个人资料图片的旧方法现在不起作用了

https://plus.google.com/s2/photos/profile/(user_id)?sz=150

这样做的新方法是

请求网址

https://www.googleapis.com/plus/v1/people/115950284...320?fields=image&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)

这将以json格式提供Google个人资料图片网址,如下所示

回应:

{
    "image": 
    {
         "url": "https://lh3.googleusercontent.com/-OkM...AANA/ltpH4BFZ2as/photo.jpg?sz=50"
    }
}
Run Code Online (Sandbox Code Playgroud)


更多参数可以发现与你可能需要从URL发送这里

有关更多详细信息,您还可以查看给出的问题我在哪里解答了相同类型的问题 如何通过Google Plus中的用户ID获取用户图像?

快乐编码!!

  • 它仍然不是重定向,不能在 `<img>` 标签中使用 (2认同)
  • 这就是为什么它以JSON格式提到的不是你得到的,因为有变化所以你不能指望一切都按照之前的工作@KirillKulakov (2认同)
  • 有没有什么方法可以让我们在没有google plus api的情况下获取用户的个人资料图片,因为该图片将来会被弃用 (2认同)

Emi*_*röm 93

更新:以下方法自2015年起不起作用

可以获取个人资料图片,您甚至可以设置它的大小:

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>
Run Code Online (Sandbox Code Playgroud)

示例:我的个人资料照片,大小设置为100像素:

https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100
Run Code Online (Sandbox Code Playgroud)

使用图像标记:

<img src="https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100" width="100" height="100">
Run Code Online (Sandbox Code Playgroud)

希望你能运作!

  • 这应该明确地标记为正确的答案. (4认同)
  • 我已经更新了答案,以反映上述方法在几天前不起作用. (2认同)
  • @rgoraya:但是你如何自动计算xxxxxx部分? (2认同)

Sal*_*dor 47

更新:Google停止了对此方法的支持,现在返回404(未找到)错误.


所有这些网址都会获取用户的个人资料图片:

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}
Run Code Online (Sandbox Code Playgroud)

他们会重定向到您从Google API获得的相同图片网址,这是一个丑陋的链接,如
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg

最简单的是直接使用像图像源:

<img src="https://www.google.com/s2/photos/profile/{user_id}">
Run Code Online (Sandbox Code Playgroud)

否则,为了获得与Google API调用完全相同的URL,您可以读取图像标题,
例如在PHP中:

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

使用PHP获取Google Plus Profile Picture一文中所述.


Mas*_*sum 26

方法1 :(不再有效)

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>
Run Code Online (Sandbox Code Playgroud)

方法2 :(每个请求计入您的api速率限制,即每天10k请求免费)

https://www.googleapis.com/plus/v1/people/<user_id>?fields=image&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)

使用以下响应格式:

{ "image": { "url": "lh5.googleusercontent.com/-keLR5zGxWOg/.../photo.jpg?sz=50"; } }
Run Code Online (Sandbox Code Playgroud)

方法3 :(不要求api密钥)

http://picasaweb.google.com/data/entry/api/user/<user_id>?alt=json
Run Code Online (Sandbox Code Playgroud)

在json响应中,您将获得一个名为"gphoto $ thumbnail"的属性,其中包含如下所示的个人资料图片网址:

http://lh6.ggpht.com/-btLsReiDeF0/AAAAAAAAAAI/AAAAAAAAAAA/GXBpycNk984/s64-c/filename.jpg
Run Code Online (Sandbox Code Playgroud)

您可能会在网址中注意到部分"s64-c",这意味着图像大小为64,我尝试使用其他值,如"s100-c",他们工作.此外,如果你删除"s64-c"部分并附加"?sz = 100"参数,那么现在也可以使用.虽然这不是获取gplus用户的个人资料图片的好方法,但其优点是不需要任何api密钥.

  • 我想知道是否有类似picasaweb的东西,但你直接从电子邮件中获取图片而不是谷歌+.我只是有一个用户在Gmail帐户中有图片但没有Google +上的个人资料,并且没有带图片的情况.只能获得这样的网址http://lh3.googleusercontent.com/-k10Va1BdzL8/AAAAAAAAAAA/AAAAAAAAAAA/5vpJcwClcAA/s64-c/117785406588046698617.jpg (2认同)
  • picasaweb.google.com api已停用,将于2019年1月关闭https://developers.google.com/picasa-web/ (2认同)

Sha*_*elo 10

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'};
Run Code Online (Sandbox Code Playgroud)

//输出示例:https://lh3.googleusercontent.com/-2N6fRg5OFbM/AAAAAAAAAAI/AAAAAAAAADE/2-RmpExH6iU/s64-c/photo.jpg

更改:大小为"s64"的64