Вызовы DotNetOpenAuth Twitter API версии 1.1 в MVC4

Я пишу веб-приложение MVC4, которое должно запрашивать API Twitter версии 1.1. Встроенный в MVC4, я могу использовать функцию «Войти через Twitter», когда я просто активирую OAuthWebSecurity.RegisterTwitterClient в AuthConfig.cs. Затем это аутентифицирует вход в Twitter, но я хочу авторизовать пользователя, чтобы я мог выполнять вызовы API v1.1 от имени пользователя.

Я нашел этот пост в Stack Overflow, в котором используется настраиваемые классы для решения чего-то другого (проблема с параметром force_login), но я использовал эти классы и изменил UserAuthorizationEndpoint на oauth / authorize. Я изменил эту строку кода:

UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/authenticate", HttpDeliveryMethods.GetRequest | HttpDeliveryMethods.AuthorizationHeaderRequest),

к этому:

UserAuthorizationEndpoint = new MessageReceivingEndpoint("https://api.twitter.com/oauth/authorize", HttpDeliveryMethods.GetRequest | HttpDeliveryMethods.AuthorizationHeaderRequest),

Он работает для авторизации, а это значит, что теперь мое приложение авторизует пользователя Twitter. Однако, когда я вызываю API v1.1, я получаю ошибку «(401) Неавторизован». Это код, который я использую для звонка:

var var1 = WebWorker.PrepareAuthorizedRequest(new MessageReceivingEndpoint("https://api.twitter.com/1.1/followers/ids.json?cursor=-1&screen_name=sitestreams", HttpDeliveryMethods.GetRequest), accessToken);
var var2 = var1.GetResponse();

Думаю, мне также нужен oauth_token_secret для авторизации вызова. Может ли DotNetOpenAuth предоставить мне oauth_token_secret? Могу ли я затем использовать WebWorker.PrepareAuthorizedRequest для отправки также oauth_token_secret?

Я также нашел этот пост в Stack Overflow, в котором говорится, что я не могу использовать для этого DotNetOpenAuth. Однако с тех пор код DotNetOpenAuth был обновлен, и я хочу знать, обслуживает ли он теперь то, что я хочу делать, что, по сути, очень простая вещь: разрешить пользователю войти в мое веб-приложение с помощью Twitter, а затем разрешить мое веб-приложение, чтобы увидеть подписчиков пользователя.

Итак, все сводится к следующему: могу ли я использовать DotNetOpenAuth в MVC4 для авторизации пользователя, а затем вызвать Twitter API v1.1 от имени пользователя, например, чтобы ПОЛУЧИТЬ подписчиков / идентификаторы . Если возможно, как мне это сделать?


person Ben    schedule 17.01.2013    source источник


Ответы (1)


Да, DotNetOpenAuth можно использовать для этого. Вы можете загрузить образцы DotNetOpenAuth, которые включают проект OAuthConsumer со страницей Twitter.aspx, на которой показано, как это сделать. Это. Да, это веб-формы вместо MVC, но их несложно перевести.

Причина, по которой у вас возникают проблемы, заключается в том, что вы пытаетесь использовать предоставленные Microsoft классы в пространстве имен DotNetOpenAuth.AspNet, которые предназначены исключительно для аутентификации, а не авторизации. Использование класса _2 _ / _ 3_ из примеров позволит вам делать то, о чем вы просите.

person Andrew Arnott    schedule 07.02.2013