我正在尝试编写一个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
谷歌数据api说:
每个联系人都有照片链接
元素。它的形式是:
href='https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de'
gd:etag='“ktlczws1bcp7imbbpv43v4lxezxerzac。”'>
该元素出现在
联系人有关联照片或
不是。如果联系人确实有照片,
然后元素包含一个gd:etag
属性指定
照片。如果联系人没有照片,
那么没有gd:etag属性,并且
Href属性提供了
用于向联系人添加照片。
添加或更新照片
元素,发送一个新的
在URL中使用PUT命令的照片:
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(在可能的情况下)的图片更新任何丢失的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/*
。
关于ruby - 在Ruby中更新Google联系人图片时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6151034/