Я хотел иметь возможность сделать простое обновление статуса из C # /. NET, но не хотел вставлять большую библиотеку.
Итак, я написал небольшой OAuth.Manager класс , который делает это.
Это описано здесь:
OAuth с проверкой в .NET
Пример кода для обновления статуса:
var oauth = new OAuth.Manager();
oauth["consumer_key"] = CONSUMER_KEY;
oauth["consumer_secret"] = CONSUMER_SECRET;
oauth["token"] = your_stored_access_token;
oauth["token_secret"] = your_stored_access_secret;
var url = "http://api.twitter.com/1/statuses/update.xml?status=Hello+World";
var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Headers.Add("Authorization", authzHeader);
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
MessageBox.Show("There's been a problem trying to tweet:" +
Environment.NewLine +
response.StatusDescription +
Environment.NewLine +
Environment.NewLine +
"You will have to tweet manually." +
Environment.NewLine);
}
В первый раз вам нужно получить токен доступа и секрет. Это делается в несколько шагов, начиная с кода:
var oauth = new OAuth.Manager();
oauth["consumer_key"] = MY_APP_SPECIFIC_KEY;
oauth["consumer_secret"] = MY_APP_SPECIFIC_SECRET;
oauth.AcquireRequestToken("https://api.twitter.com/oauth/request_token", "POST");
Шаг 2 - сообщить пользователю ** о посещении https://api.twitter.com/oauth/authorize?oauth_token=XXXX
, где xxxx заменяется фактическим полученным токеном, доступным в этом случае oauth["token"]
. Шаг 3 - сказать пользователю, чтобы он взял (ctrl-c) PIN-код с веб-страницы и вставил его в свое приложение, где вы используете пин-код для получения токена другого типа.
Лучший способ - автоматизировать эту последовательность веб-интерфейса с помощью формы Windows со встроенным элементом управления WebBrowser. Когда вы установите для свойства Url этого элемента управления соответствующее значение, эта веб-страница будет отображаться для вас в основной форме вашего собственного приложения. Вы также можете автоматизировать часть, где вы получаете PIN-код. Это уменьшает переключение контекста для вашего пользователя и делает вещи проще для понимания.
В любом случае, с помощью булавки, которую вы делаете, шаг 4:
oauth.AcquireAccessToken("https://api.twitter.com/oauth/access_token",
"POST",
pin);
... который отправляет еще один HTTP-запрос REST, а когда он возвращается, у вас будет токен доступа и секрет, доступные в oauth["token"]
и oauth["token_secret"]
.
Эта авторизация с веб-интерфейсом должна происходить только один раз; после того, как вы получите токен доступа и секретный ключ один раз , вы можете сохранить их и использовать повторно. Они никогда не истекают, говорит Твиттер.
Затем можно приступить к отправке обновления статуса ...
var url = "http://api.twitter.com/1/statuses/update.xml?status=Hello+World";
var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
...
... как указано выше.