10

通过遵循 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,这是我进行 Web 开发的第二周,抱歉,如果我看起来很笨拙啊哈。

任何帮助,将不胜感激!

谢谢,

戈兰

4

4 回答 4

22

您需要向 url 发出请求,但还需要将 access_token 作为查询参数。

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

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

于 2011-10-03T19:03:24.567 回答
3

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

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

更多信息在这里

于 2013-10-18T08:15:27.827 回答
1

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

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

如果你想了解更多,这里是谷歌关于联系人照片的文档

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

于 2012-03-15T16:15:00.547 回答
0

使用与检索联系人相同的授权请求代码,只需将 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); 
于 2012-08-04T18:38:16.257 回答