Подтвердить что ты не робот

Asp.Net MVC 5 Owin Twitter Аутентификация 401 Исключение

Я установил аутентификацию OAuth с использованием промежуточного программного обеспечения Owin на основе проекта по умолчанию, который создается при запуске нового веб-проекта с использованием аутентификации "Индивидуальные учетные записи".

Я немного изменил его, но Facebook и Google работают отлично, однако, когда я нажимаю кнопку "твиттер", чтобы решить проблему, она бросает исключение 500 http с сообщением об ошибке:

Код состояния ответа не указывает на успех: 401 (неавторизованный).

Это только связано с Twitter. Вот мой auth config:

// Just a configuration section that reads from the web.config
var configuration = new OwinCookieConfigurationSection("owinCookieConfiguration");
app.UseCookieAuthentication(GetCookieAuthenticationOptions(configuration));
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

app.UseTwitterAuthentication(
    consumerKey: "XXX",
    consumerSecret: "XXX"
);

app.UseFacebookAuthentication(
    appId: "XXX",
    appSecret: "XXX"
);

app.UseGoogleAuthentication();

Это определенно ошибка 500, а не ошибка 401, как она указывает, и я подтвердил, что она никогда не пропускает исходную задачу для Twitter. Трассировка стека показывает, что Twitter не возвращает код успеха из вызова ObtainRequestToken:

Stack Trace

Любые идеи?

4b9b3361

Ответ 1

Вам нужно войти в приложение Twitter Dev и добавить адрес веб-сайта. Я знаю, что это кажется глупым, но это решит вашу проблему.

  • https://apps.twitter.com/
  • Перейдите на вкладку "Настройки"
  • Установите URL-адрес CallBack на любой веб-сайт. Даже если это не реально.

Это должно решить вашу проблему.

Ответ 2

Я решил свою проблему так, как описал Патрик 1 год назад. Сегодня я снова столкнулся с тем же вопросом, но на этот раз я обнаружил, что проблема была вызвана из-за установки даты/времени на моем компьютере. Поскольку дата/время на этом компьютере обычно не синхронизированы, мне пришлось перейти на вкладку "Изменить дату и время" → "Время в Интернете" и включить синхронизацию с Интернетом.