【问题标题】:Problem updating Google Contact Picture in Ruby在 Ruby 中更新 Google 联系人图片时出现问题
【发布时间】:2011-05-27 10:35:47
【问题描述】:

我正在尝试编写一个 ruby​​ 应用程序来更新 Google 联系人照片,但我无法正常上传。我不确定我是否误解了 Google API,但这是我目前所拥有的:

Net::HTTP.start(URI.parse(image_element.attributes['href']).host) do |http|
  response, body = http.put(URI.parse(image_element.attributes['href']).path, data, {'If-Match' => '*', 'content-type'=>'image/*'})
end

Google 数据 API 说:

每个联系人都有照片链接 元素。它具有以下形式:

href='https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de' gd:etag='"KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc."'>

该元素是否出现 联系人有相关照片或 不是。如果联系人有照片, 然后元素包含一个 gd:etag 指定 ETag 的属性 照片。如果联系人没有照片, 然后没有 gd:etag 属性,并且 href 属性提供了指向的 URL 用于向联系人添加照片。

在给定的情况下添加或更新照片 如上所示的元素,发送一个新的 带有 PUT 命令到 URL 的照片: https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de。 记得设置一个合适的“image/*” 内容类型标头。

要删除照片,请发送 HTTP DELETE 请求相同的 URL。

更新或删除照片时, 在 If-Match 中发送照片的 ETag HTTP 请求的标头。 或者,使用 If-Match: * 到 无论是否更新或删除 你有最新版本的 照片。

谁能看出我哪里出错了?

更新和回答: 在 StackOverflow 和一位伙伴的帮助下,我设法完成了这项工作。基本上错误是设置了不正确的 MIME 类型(见下文),而且我没有通过 Google 正确验证 PUT 请求。我试图写的是一个脚本,它用来自 Gravatar 的图像更新任何丢失的谷歌联系人照片(如果可能的话)。一旦我开始工作,它就很好用:设法匹配大约 2 到 3 打联系人。我在脚本上写了一篇博文,以防有人也想运行它:http://ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/

【问题讨论】:

    标签: ruby google-api gdata google-contacts-api


    【解决方案1】:

    我自己从未使用过 Google 数据 API,但尝试将 Content-Type 标头设置为,例如,image/jpeg,而不仅仅是image/*

    【讨论】:

    • 这是一个问题,但不是唯一的问题。我现在已经修复了脚本并且效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多