2011-05-27 2 views
2

Я пытаюсь написать приложение ruby ​​для обновления фотографий контактов Google, но я не могу загрузить загрузку. Я не уверен, если я неправильно понял API Google, но это то, что я до сих пор:Проблема с обновлением изображения Google в Ruby

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 говорит:

Каждый контакт имеет ссылку фото элемент. Она имеет вид:

HREF = 'https: //www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de' Г.Д.: 'KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc "' Etag = >

Этот элемент отображается, если у контакта есть связанное фото или нет. Если у контакта есть фотография, , то элемент содержит атрибут gd: etag с указанием ETag для фотографии . Если у контакта нет фотографии, , тогда нет атрибута gd: etag, а атрибут href предоставляет URL-адрес , чтобы добавить фотографию к контакту.

Чтобы добавить или обновить фотографию учитывая элемент, показанный выше, отправьте новую фото с командой PUT на URL: https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de. Не забудьте установить правильный заголовок Content-Type «image/*» .

Чтобы удалить фотографию, отправьте запрос HTTP DELETE на тот же адрес.

При обновлении или удалении фотографии отправьте фотографию ETag в заголовок HTTP-запроса If-Match HTTP-запроса. В качестве альтернативы, используйте If-Match: * to обновление или удаление независимо от того, у вас установлена ​​последняя версия фотографии .

Может ли кто-нибудь увидеть, где я иду не так?

UPDATE AND ANSWER: Мне удалось получить эту работу с помощью StackOverflow и помощника. В принципе, неправильный тип MIME был установлен (см. Ниже), но также я не был правильно аутентифицирован с помощью Google для запроса PUT. То, что я пытался написать, - это сценарий, который обновляет любые отсутствующие фотографии контактов Google с изображениями из Gravatar (где это возможно). Как только я получил его работу, он отлично поработал: удалось сопоставить около 2 - 3 дюжины контактов. Я написал сообщение в блоге по сценарию, если кто-то захочет запустить его также: http://ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/

ответ

3

Я никогда не использовал API данных Google сам, но попробуйте настроить заголовок Content-Type, например, image/jpeg, а не только image/*.

+1

Это была проблема, но это была не единственная проблема. Теперь я исправил скрипт, и он отлично работает. – Ash

Смежные вопросы