OAuthを使用して、C#で書かれた.NETアプリからTwitPicに写真をアップロードしています。TwitPic + OAuthを使用して写真+ツイートをTwitterにアップロードする(.NET C#) - なぜツイートはありませんか?
oAuthのものはちょっと難しいです。私はそれを処理するために2ビットの.NETコードを見つけましたが、いずれにも満足していませんでした。 DotNetOpenAuthは、私が必要以上に重く感じられました。 (ちょうどoAuth署名とトークン要求をしたい)。 OAuthBase.csコードは私にとっては混乱していて、やさしく感じられませんでした。私はメソッドに6文字列のパラメータを渡さなければならなかった。もし何か不具合があったなら、私にはうんざりだ。
私はそれを自分自身で行うためにいくつかのコードを書いています。それはかなり小さく、うまくいくようです。それは "要求トークン"を取得するために動作します。これは、権限Webページをポップし、 "アクセストークン"を取得するために動作します。 TwitPicに写真をアップロードすることもできます。私は戻って、アップロードから取得
POST http://api.twitpic.com/2/upload.json HTTP/1.1
Content-Type: multipart/form-data; boundary=48cb9a6d-1f1d-432d-b6e3-307e32e8228a
X-Auth-Service-Provider: https://api.twitter.com/1/account/verify_credentials.json
X-Verify-Credentials-Authorization: OAuth realm="http://api.twitter.com/",
oauth_consumer_key="Dv1er93yKzEMn74hZfPmJA",
oauth_nonce="51fi305k",
oauth_signature="4oWcmZcd%2F%2F81JslJ70xFXFm8%2BQs%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1292277715",
oauth_token="59152613-z8EP4GoYS1Mgo3E29JfIqBnyTRlruAJs8Bkvs3q0T",
oauth_version="1.0"
Host: api.twitpic.com
Content-Length: 14605
Expect: 100-continue
Connection: Keep-Alive
--48cb9a6d-1f1d-432d-b6e3-307e32e8228a
Content-Disposition: file; name="media"; filename="CropperCapture[10].jpg"
Content-Type: image/jpeg
....
--48cb9a6d-1f1d-432d-b6e3-307e32e8228a
Content-Disposition: form-data; name="key"
twitpic-api-key-here
--48cb9a6d-1f1d-432d-b6e3-307e32e8228a
Content-Disposition: form-data; name="message"
uploaded from Yappy. (at 12/13/2010 5:01:55 PM)
--48cb9a6d-1f1d-432d-b6e3-307e32e8228a--
JSONはこのようなものです::
{"id":"3f0jeiw5",
"text":"uploaded from Yappy. (at 12\/13\/2010 5:01:55 PM)",
"url":"http:\\/twitpic.com\/3f0jeiw5",
"width":257,
"height":184,
"size":14156,
"type":"jpg",
"timestamp":"Mon, 13 Dec 2010 22:02:06 +0000",
"user":{
"id":54591561,"screen_name":"bfavre"}
}
すべてのHTTP応答はupload HTTP messageはこのようになります200または201
として戻ってきます
しかし、問題は、Twitpicに画像をアップロードした後、その画像がTwitPicで利用可能だが、関連するメッセージがTwitterに表示されないということだ。
何がありますか?
a random blog post TwitPic + oAuthを使用すると、別のHTTPトランザクションでTwitterに直接Twitterのメッセージを投稿する必要があります。ハァッ? oAuthのメールの目的は、消費者が私のために何かをすることを許すことだと思っていました - TwitPicに私のためにツイートを投稿できるようにすること。
ヒント
EDIT
私はもう少しここで学びました。 This blog postから2010年5月には、X-Auth-Service-Provider
の値をhttps://api.twitter.com/1/account/verify_credentials.json
にすると、twitpicが自分のリクエストを受け取ったときに "verify_credentials.json"を "twitter.com"で呼び出すように指示しています。本当に自分の資格情報を確認しているだけの場合、これはなぜTweetが投稿されないのかを説明します。
投稿はまた、それを交換してそれをhttps://api.twitter.com/1/status/update.json
と置き換えると、はTwitPic経由の委任をTwitterで更新できるはずだと示唆しています。しかし、それは先見的なポストです。この能力を得るにはTwitterの仕事が必要だと言います。
まだこれを行うHTTPメッセージの例は見つかりませんでした。誰でも?
UPDATE
https://api.twitter.com/1/status/update.json
にURLを検証し、署名のためのPOSTを使用して変換した後、私は401レスポンスコードを取得:
{"errors":
[{"code":401,
"message":"Could not authenticate you (header rejected by twitter)."}]
}
これは基本的にhere, in the twitter dev forumを説明したのと同じ問題です。そのスレッドの最後の提案は、署名計算アルゴリズムが間違っていたことですが、私のsigアルゴリズムは他のすべての要求と連携しているので、間違っていると思います。
FYI - 私はあなたのシンプルなOAuthライブラリが好きです。私は拡張文字を扱うための迅速な修正を行い、ここに投稿しました:http://cropperplugins.codeplex.com/discussions/249415 – russau
あなたの変更はOAuthライブラリにあります。また、現在誰でもダウンロードできるDLLがあります。 – Cheeso