Просто следите - спасибо, ваши изменения теперь в библиотеке OAuth; Кроме того, теперь есть DLL, которую может скачать каждый.

ружаю фотографии в TwitPic, используяOAuthиз приложения .NET, написанного на C #.

OAuth материал немного сложнее. Я нашел два бита кода .NET, чтобы справиться с этим, но не был удовлетворен ни тем, ни другим.DotNetOpenAuth казалось довольно тяжелым, больше, чем мне нужно. (Просто хочу сделать oAuth подписи и запросы токенов).OAuthBase.cs код казался мне запутанным и не элегантным. Я должен был передать 6 строковых параметров в методы, и если я получу какие-либо не в порядке, горе мне.

Поэтому я написал код для этого сам, он довольно маленький и, кажется, работает. Это работает, чтобы приобрести "токены запроса". Он работает, чтобы открыть веб-страницу авторизации и получить «токены доступа». Он также работает для загрузки фотографий в TwitPic.

Все ответы HTTP возвращаются как 200 или 201.

загрузить HTTP сообщение выглядит так:

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"}
}

Но проблема в том, что после того, как я загружаю изображение в Twitpic, изображение становится доступным на TwitPic, но соответствующее сообщение никогда не появляется в Twitter.

Что дает?

Я читаю вслучайное сообщение в блоге что использование TwitPic + oAuth требует, чтобы я отправил твит-сообщение в отдельной HTTP-транзакции, прямо в Twitter. да? Я думал, что целью oAuth по почте было позволить потребителям делать что-то от моего имени - например, разрешить TwitPic опубликовать твит для меня.

Есть намеки?

РЕДАКТИРОВАТЬ
Я учусь немного больше здесь.Этот пост в блоге с мая 2010 года предлагает мне использовать значение дляX-Auth-Service-Provider изhttps://api.twitter.com/1/account/verify_credentials.json говорит TwitPic вызвать "verify_credentials.json" на twitter.com, когда он получает мой запрос. Если это действительно просто проверка моих учетных данных, это объясняет, почему не опубликован твит.

Сообщение также предлагает заменить это и заменить егоhttps://api.twitter.com/1/status/update.json должен Позвольте мне обновить Twitter через TwitPic с делегированием. Но это прогнозная статья, в которой говорится, что получение этой возможности требует работы со стороны Twitter.

Я не нашел пример HTTP-сообщения, которое делает это еще. Кто-нибудь?

ОБНОВИТЬ
После преобразования проверить URL вhttps://api.twitter.com/1/status/update.json и используя POST для подписи, я получаю код ответа 401:

{"errors":
  [{"code":401,
    "message":"Could not authenticate you (header rejected by twitter)."}]
}

Это в основном та же проблема, что и описаннаяздесь, на твиттере, В конце этого потока было высказано предположение, что алгоритм вычисления сигнатуры неверен, но я думаю, что это неверно, поскольку мой алгоритм sig работает со всеми другими запросами.

Ответы на вопрос(2)

Ваш ответ на вопрос