Как вы знаете, с недавнего времени Twitter стал использовать протокол авторизации OAuth 1.0 (зачем можно почитать тут [1]). В данной статье я хочу коротко рассказать о том, как разработчику twitter клиента написать свой метод для работы по этому протоколу. Я буду использовать язык C# и работать с Twitter API не напрямую, а используя замечательно спроектированную библиотеку TweetSharp[2].
Процесс расписан по шагам, каждый шаг сопровождается пояснениями.
Прежде всего зайдите на сайт dev.twitter.com. Нажмите register. Зарегистрируйтесь как разработчик на сайте. Далее зарегеструйте свое приложение. После этого появится окно, в котором будет разнообразная информация. Нас интересует только Consumer Key и Consumer Secret (на картинке вместо них черные прямоугольники):

Эти две лексемы нам еще очень пригодятся. Сохраните их где-нибудь в вашем приложении – например, в ресурсах под соответствующими именами.
При первом запуске приложение должно отправить запрос с полученными лексемами к сервису:
FluentTwitter.SetClientInfo(
new TwitterClientInfo
{
ConsumerKey = Properties.Resources.ConsumerKey,
ConsumerSecret = Properties.Resources.ConsumerSecret
});
var twit = FluentTwitter.CreateRequest().Authentication.GetRequestToken();
var response = twit.Request();
var RequestToken = response.AsToken();
twit = twit.Authentication.AuthorizeDesktop(RequestToken.Token);
Последняя строка этого кода откроет ваш браузер по умолчанию со следуйщим сообщением:

Нажмите Allow. Появится окно с числом – это и есть нужный нам PIN. Проблема в том, что этот PIN нужно иметь в программе, а не в браузере. Для этого создайте диалог, запрашивающий у пользотеля этот PIN. В коде ниже этот диалог вызывается в методе getPinFromUser:
string verifier = getPinFromUser();
В терминах протокола OAuth 1.0 PIN называется oauth_verifier.
Теперь отправим запрос к сервису, содержащий consumerKey, consumerSecret & Pin. Сервис возвращает AccessToken, который будет использован приложением для дальнейшей работы с сервисом:
twit.Authentication.GetAccessToken(RequestToken.Token, verifier);
var response2 = twit.Request();
Сохраните AccessToken в конфигурационном файле вашего приложения, желательно в зашифрованном виде.
Через какое-то время twitter больше не будет признавать ваш AccessToken и вам придется запросить новый. Это делается так же как и раньше с помощью метода GetAccessToken.
Ссылки по теме:
[1] Кратко о OAuth protocol 1.0
[2] TweetSharp
Процесс расписан по шагам, каждый шаг сопровождается пояснениями.
Шаг 1. Получение ConsumerKey и ConsumerSecret
Прежде всего зайдите на сайт dev.twitter.com. Нажмите register. Зарегистрируйтесь как разработчик на сайте. Далее зарегеструйте свое приложение. После этого появится окно, в котором будет разнообразная информация. Нас интересует только Consumer Key и Consumer Secret (на картинке вместо них черные прямоугольники):

Эти две лексемы нам еще очень пригодятся. Сохраните их где-нибудь в вашем приложении – например, в ресурсах под соответствующими именами.
Шаги 2 и 3. Получение Pin
При первом запуске приложение должно отправить запрос с полученными лексемами к сервису:
FluentTwitter.SetClientInfo(
new TwitterClientInfo
{
ConsumerKey = Properties.Resources.ConsumerKey,
ConsumerSecret = Properties.Resources.ConsumerSecret
});
var twit = FluentTwitter.CreateRequest().Authentication.GetRequestToken();
var response = twit.Request();
var RequestToken = response.AsToken();
twit = twit.Authentication.AuthorizeDesktop(RequestToken.Token);
Последняя строка этого кода откроет ваш браузер по умолчанию со следуйщим сообщением:

Нажмите Allow. Появится окно с числом – это и есть нужный нам PIN. Проблема в том, что этот PIN нужно иметь в программе, а не в браузере. Для этого создайте диалог, запрашивающий у пользотеля этот PIN. В коде ниже этот диалог вызывается в методе getPinFromUser:
string verifier = getPinFromUser();
В терминах протокола OAuth 1.0 PIN называется oauth_verifier.
Шаг 4. Получение AccessToken
Теперь отправим запрос к сервису, содержащий consumerKey, consumerSecret & Pin. Сервис возвращает AccessToken, который будет использован приложением для дальнейшей работы с сервисом:
twit.Authentication.GetAccessToken(RequestToken.Token, verifier);
var response2 = twit.Request();
Сохраните AccessToken в конфигурационном файле вашего приложения, желательно в зашифрованном виде.
Шаг 5. Обновление AccessToken
Через какое-то время twitter больше не будет признавать ваш AccessToken и вам придется запросить новый. Это делается так же как и раньше с помощью метода GetAccessToken.
Ссылки по теме:
[1] Кратко о OAuth protocol 1.0
[2] TweetSharp