谷歌API:获取联系人照片



我已经能够按照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."'>

问题是我不知道如何让它显示。 当我尝试它时,我只得到网址的最后一部分(即:"/32432eewqdweq")而没有图像。

我正在使用rails,这是我做Web开发的第二周,对不起,如果我看起来菜鸟啊哈。

任何帮助将不胜感激!

谢谢

戈兰

您需要向 url 发出请求,但也要将access_token作为查询参数包含在内。

因此,使用您的示例,假设您的access_token是ABCDEF123456ABCDEF,那么您要发出的 GET 请求是:

https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de?access_token=ABCDEF123456ABCDEF

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

注意:如果联系人没有照片,则照片链接元素 没有 gd:etag 属性。

更多信息在这里

首先,您需要对该 url 进行授权 GET,即在授权标头中,您必须输入 "OAuth " + AccessToken。另外,我还没有尝试过,但正如 Savil 所说,使用访问令牌作为查询参数,您也可以实现相同的目标。

在任何情况下,Google都会以图像的字节数响应您,因此您无法按原样显示。您需要将字节数组保存到服务器中的文件中(我认为这不是一个好的解决方案)或找到另一种显示照片的方法

如果您想了解更多信息,这里是Google关于联系人照片的文档

这是一个相当古老的问题,但我希望这会有所帮助

使用与检索联系人相同的授权请求代码,只需将 url 替换为联系人图像的链接 rel 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); 

相关内容

  • 没有找到相关文章

最新更新