2011-05-27 123 views
2

我正在尝试编写一个Ruby应用来更新Google联系人照片,但无法上传。林不知道如果我误解了谷歌的API,但是这是我到目前为止有:在Ruby中更新Google联系人图片时出现问题

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 

的谷歌数据API说:

每一次接触有一个照片链接 元素。它具有以下形式:

HREF =的 'https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de' GD: ' “KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc”' ETAG = >

该元素显示 联系人是否有关联的照片或 而不是。如果联系人确实有照片,则 则该元素包含指定 照片的ETag的gd:etag 属性。如果联系人没有照片, 则没有gd:etag属性,并且 href属性提供了用于将照片添加到联系人的URL到 。

要添加或更新给定上面所示的 元件的照片,发送一个新的 相片与PUT命令的网址: https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de。 请记住设置适当的“图像/ *” Content-Type标头。

要删除照片,请将HTTP DELETE 请求发送到同一个URL。

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

任何人都可以看到我要去哪里吗?

UPDATE AND ANSWER: 我设法使用StackOverflow和队友提供的帮助。基本上错误的是设置了不正确的MIME类型(见下文),但我也没有通过Google针对PUT请求进行正确的身份验证。我试图写是从的Gravatar(如果可能)的图像更新任何丢失的谷歌联系人照片的脚本。一旦我得到它的工作,它运作得很好:设法匹配大约2-3个联系人。我写了一篇关于万一有人想也运行脚本博客文章:http://ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/

回答

3

我从来没有使用谷歌数据API自己,但尝试设置Content-Type头,例如,image/jpeg,而不是只是image/*

+1

这是一个问题,但它不是唯一的问题。现在我已经固定的脚本,它的伟大工程。 – Ash 2011-06-13 04:57:03