2011-01-31 24 views
3

私は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投稿を有効にするためのトリックがある場合は誰でも教えてください。

答えて

1

Tumblrに写真の投稿を投稿するときに私のアプリが生成している基本文字列のダンプを作成しました。改行は、あいまいさを軽減するために追加されました。それが役に立てば幸い。

POST&http%3A%2F%2Fwww.tumblr.com%2Fapi%2Fwrite& 
caption%3D%253Cp%253Etesting%253C%252Fp%253E%26 
click-through-url%3D%26 
format%3Dhtml%26 
generator%3D%253C%2520href%253D%2522http%253A%252F%252Fsudocode.net%252Fprojects%252Fpicasa-2-tumblr%2522%253EPicasa2Tumblr%253C%252Fa%253E%26 
group%3Darvn.tumblr.com%26 
oauth_consumer_key%3Dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx%26 
oauth_nonce%3Db0f187f5d0781b3d6aea0f192e116524%26 
oauth_signature_method%3DHMAC-SHA1%26 
oauth_timestamp%3D1296560370%26 
oauth_token%3DwkR9Jjtnp0tMPHp3aqcxvRd401cUeVX7PzxUrc0Y8SZZRoLHgs%26 
oauth_version%3D1.0%26 
private%3D0%26 
slug%3D%26 
state%3Ddraft%26 
tags%3D%26 
type%3Dphoto 

ことの一つは、あなたがタイプパラメータを使用して、写真を投稿するつもりTumblrのを通知しませんでした。

+0

ありがとう、私はタイプparamを追加し、まだ失敗しました(私の質問を編集してそう)。私が紛失しているいくつかのパラメータが実際に必要で、どうにかoauthの失敗として報告されているのだろうかと思います。あなたの認証ヘッダーにoauthパラメータ(フォームデータ部分として与えられた他のパラメータ)のみが含まれていますか? –

2

SilverlightでのOAuth実装とまったく同じ問題を抱えています。問題なくAPIの残りの部分を実装しました。このメソッドは、OAuthを使用せずにメール/パスワードヘッダーを送信するだけで動作します。

Arvinさんの投稿では、彼のOAuthに他の非ファイルフィールドを含めていますが、問題がわかりました。私はちょうど私のポストに同じことをしたので、彼らは複数の部分からなるフォーム本体に入っていましたが、OAuth sigにも追加されました - そして今は問題なく写真の投稿をアップロードしています!

0

私は同じ問題を抱えていました。私が空のTumblrの秘密を含んでいたからです。あなたはそれを得る場所

これは、次のとおりです。 http://www.tumblr.com/oauth/apps - また>「ショー秘密鍵」

、私は彼らのhttps://www.tumblr.com/oauth/access_token URLでXAUTHのものを使用しています。

こちらがお役に立てば幸いです。私はDeviseの宝石とレール上にいる。

0

同じ問題がありました:私が使用したOAuthライブラリ(GTM OAuth)が署名のPOSTデータフィールドを使用していなかったようです。 タイプキャプションをクエリ文字列として追加した後、OAuthライブラリがそれらを使用して、写真/投稿/その他のものをアップロードできました。

すべてのポストボディフィールド(バイナリデータを除く)のように、OAuthシグネチャの一部である必要があります。

関連する問題