在Ruby中更新Google Contact Picture时出现问题

我正在尝试编写一个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 Data API说:

每个联系人都有一个照片链接元素。 它的forms如下:

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 / *”Content-Type标头。

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

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

任何人都可以看到我错在哪里?

更新和答案:我已经设法在StackOverflow和配合的帮助下使用它。 基本上错误的是设置了不正确的MIME类型(见下文),但我没有正确地使用Google对PUT请求进行身份validation。 我试图写的是一个脚本,用Gravatar中的图像更新任何遗漏的Google联系人照片(如果可能)。 一旦我开始工作,它工作得很好:设法匹配大约2-3个联系人。 我写了一篇关于脚本的博客文章,以防任何人想要运行它: http : //ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/

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

Interesting Posts