Google API:获取联系人照片
我已经能够通过遵循API检索除联系人照片之外的所有内容。Google API:获取联系人照片
我可以从返回的XML中获取img url以及gd:etag。以下是Google API的示例,它与我得到的是同样的东西,当然对于我的联系人来说属性的值有所不同。
<link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*'
href='https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de'
gd:etag='"KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc."'>
问题是我不知道如何让它显示。当我尝试它时,我只是得到了url的最后部分(即:“/ 32432eewqdweq”)并且没有图像。
我正在使用rails,这是我做网页开发的第二周,对不起,如果我看起来不太好看啊哈。
任何帮助,将不胜感激!
感谢,
戈兰
您将需要做出的URL的请求,也包括作为的access_token查询参数。
因此,使用你的例子,让我们说,如果你的access_token是ABCDEF123456ABCDEF,那么你想GET请求是:
https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de?access_token=ABCDEF123456ABCDEF
首先,您需要一个授权GET到那个网址,即在授权标题你必须把“OAuth”+ AccessToken。此外,我还没有尝试过,但是,正如Savil所说的,将Access Token作为查询参数,您也可以实现相同。
无论如何,Google会以的字节回应您的图片的字节,因此您无法按原样显示。您将需要保存的字节数组到一个文件在您的服务器(我不认为这是一个很好的解决方案),或者找到另一种方式来显示照片
如果您想了解更多关于它,here是谷歌的有关联系人的照片文件
这是一个相当古老的问题,但无论如何,我希望这可以帮助
我可以将字节转换为base64并显示为图像? – Satyadev 2016-12-31 20:50:36
使用用于检索联系人和刚刚更换网址的链接相对URL相同的授权请求代码联系人图片。响应将是图像的字节。使用以下代码作为响应返回图像。
//'in' is the inputStream returning from the call, response is the HttpServletResponse
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int read;
while (true) {
if ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
} else {
break;
}
}
response.setContentType("image/jpeg");
response.setContentLength(buffer.length);
request.getSession().setAttribute("image", new String(out.toByteArray()));
response.getOutputStream().write(buffer);
这是java。如何在JavaScript中实现相同? – Satyadev 2017-01-05 04:35:29
+1 @Savil非常感谢你。我尝试在标题中使用oauth2不记名标记,但这对我不起作用。你摇滚。我一定花了3个小时在这一个上打破了我的头。 – 2014-09-21 18:06:26
上帝谢谢你。 Google API有可怕的文档。 – 2016-04-20 07:25:12