У меня есть приложение для iOS, которое публикует изображения в нескольких сервисах, включая твиттер, и я пытаюсь расширить эту поддержку до Tumblr.Я адаптировал некоторый открытый исходный код для логики заголовка OAuth 1.0a, и он работает достаточно хорошо, чтобы быть успешным для твиттера + twitpic и для аутентификации tumblr.Однако публикации изображений в Tumblr не выполняются со статусом 401 и строковым ответом «Неверные учетные данные OAuth»
Для упрощения, единственными разделами, состоящими из нескольких частей, являются тип записей и данные изображений.
Так что мой простой POSThttp://www.tumblr.com/api/write, базовая строка сигнатуры (примерно, так как я отредактировал мой ключ и токен потребителя и добавлены разрывы строк для удобства чтения):
POST&http%3A%2F%2Fwww.tumblr.com%2Fapi%2Fwrite&
oauth_consumer_key%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26
oauth_nonce%3D71edd7a1224463a7e1723bb7b568060b4d69deb6%26
oauth_signature_method%3DHMAC-SHA1%26
oauth_timestamp%3D1297678418%26
oauth_token%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26
oauth_version%3D1.0%26
type%3Dphoto
мой заголовок oauth (опять же,для удобства чтения добавлены разрывы строк:
Authorization: OAuth realm="http://www.tumblr.com/",
oauth_consumer_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1296445530",
oauth_nonce="71edd7a1224463a7e1723bb7b568060b4d69deb6",
oauth_version="1.0",
oauth_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
oauth_signature="fWuli4eO3qVehfdeFzZN%2FDNYpFk%3D"
единственные другие заголовки, которые я добавляю, это Content-Type (multipart / form-data) и Content-Length, а тело сообщения просто:
--my_sorta_unique_boundary_string
Content-Disposition: form-data; name="type"
photo
--my_sorta_unique_boundary_string
Content-Disposition: form-data; name="data"
Content-Type: image/jpg
Content-Transfer-Encoding: binary
... (image data) ...
--my_sorta_unique_boundary_string--
Может кто-нибудь сказать мне, если я что-то не так сделал с моей базовой строкой подписи или заголовком auth, или есть какой-то трюк для того, чтобы заставить работать сообщения tumblr oauth?