LinqToTwitter — IsAuthorized всегда возвращает false для ApplicationOnlyAuthorizer

У меня есть веб-приложение MVC4, которое использует LinqToTwitter для отображения твитов при посещении страницы профиля пользователя, если у него есть дескриптор Twitter.

Для этого я использую ApplicationOnlyAuthorizer:

var auth = new ApplicationOnlyAuthorizer
{
  Credentials = new InMemoryCredentials
  {
    ConsumerKey = "twitterConsumerKey",
    ConsumerSecret = "twitterConsumerSecret"
  }
};
auth.Authorize();

Моя проблема в том, что я обнаружил, что auth.IsAuthorized всегда возвращает false, даже когда у меня есть вызов Authorize() и я успешно могу звонить в Twitter. Кроме того, я обнаружил, что если я вызываю Authorize() при каждом вызове Twitter, то возникает необработанное исключение, если я повторяю вызов достаточное количество раз.

Кажется очень важным, что я могу узнать, авторизована ли авторизация, прежде чем я позвоню в Twitter. На данный момент я вставил быстрое исправление, в котором я храню свою собственную переменную IsAuthorized Session, но не уверен, насколько это надежно, потому что переменная Session может пережить саму фактическую аутентификацию?

Любые советы по этому поводу будут оценены.


person DevDave    schedule 13.05.2013    source источник


Ответы (1)


При первой авторизации Twitter вернет токен на предъявителя. После авторизации вы можете получить это из свойства auth.BearerToken. При последующих вызовах вы можете повторно использовать тот же токен носителя. Срок действия токена носителя не истекает, если вы не сделаете его недействительным. Twitter рекомендует использовать токен носителя в течение примерно 15 минут, а затем повторно авторизоваться после этого.

person Joe Mayo    schedule 13.05.2013
comment
По какой-то причине я получаю BasicToken, а не BearerToken, и IsAuthorized для меня всегда ложно. Затем я получаю данные Bad Authentication с внутренним исключением, содержащим Удаленный сервер вернул ошибку: (400) Bad Request. Есть идеи? - person Oakcool; 06.09.2013
comment
@Oakcool Ваши ситуации звучат почти как 401. У меня есть FAQ здесь: linqtotwitter.codeplex.com/ - person Joe Mayo; 13.01.2014
comment
@FurquanKhan Одна из причин ошибки 403 заключается в том, что вы пытаетесь использовать ApplicationOnlyAuthorizer в контексте пользователя. например это нормально для поиска, потому что это не связано с пользователем. Однако, если вы использовали его для твитов, это не сработает, потому что твиты — это то, что делает конкретный пользователь. Итак, вы должны посмотреть на один из других авторизаторов. - person Joe Mayo; 13.01.2014
comment
@JoeMayo Перейдите по этой ссылке и посмотрите мои комментарии stackoverflow.com/questions/18156357/ - person Furquan Khan; 13.01.2014