私はtwitterを含むいくつかのサービスに画像を投稿するiOSアプリケーションを持っています。そのサポートをtumblrに拡張しようとしています。私はOAuth 1.0aヘッダロジックのためのオープンソースコードをいくつか取り入れ、twitter + twitpicとtumblrの認証に成功するのに十分うまく機能しています。しかし、tumblrへの画像投稿はステータス401で失敗し、文字列レスポンスの「無効なOAuthクレデンシャル」Tumblr OAuth画像投稿が401 /「無効なOAuth認証情報」
私の唯一のマルチパートセクションは投稿タイプと画像データです。
(私は私のコンシューマキーとトークンを編集さまし、と改行は読みやすくするために追加として、大まかに)だから私の簡単なPOSTがhttp://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-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--
署名ベース文字列または認証ヘッダーに何か問題があった場合、またはtumblr oauth投稿を有効にするためのトリックがある場合は誰でも教えてください。
ありがとう、私はタイプparamを追加し、まだ失敗しました(私の質問を編集してそう)。私が紛失しているいくつかのパラメータが実際に必要で、どうにかoauthの失敗として報告されているのだろうかと思います。あなたの認証ヘッダーにoauthパラメータ(フォームデータ部分として与えられた他のパラメータ)のみが含まれていますか? –