2011-05-27 122 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