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

+0

+1 @Savil非常感谢你。我尝试在标题中使用oauth2不记名标记,但这对我不起作用。你摇滚。我一定花了3个小时在这一个上打破了我的头。 – 2014-09-21 18:06:26

+0

上帝谢谢你。 Google API有可怕的文档。 – 2016-04-20 07:25:12

首先,您需要一个授权GET到那个网址,即在授权标题你必须把“OAuth”+ AccessToken。此外,我还没有尝试过,但是,正如Savil所说的,将Access Token作为查询参数,您也可以实现相同。

无论如何,Google会以的字节回应您的图片的字节,因此您无法按原样显示。您将需要保存的字节数组到一个文件在您的服务器(我不认为这是一个很好的解决方案),或者找到另一种方式来显示照片

如果您想了解更多关于它,here是谷歌的有关联系人的照片文件

这是一个相当古老的问题,但无论如何,我希望这可以帮助

+0

我可以将字节转换为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); 
+0

这是java。如何在JavaScript中实现相同? – Satyadev 2017-01-05 04:35:29

只是一个小提示,根据谷歌的API文档:

注意:如果联系人没有照片,然后将照片链接元素 没有GD:ETAG属性。

更多信息here