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]()
Любые идеи?
Ответы
Ответ 1
Вам нужно войти в приложение Twitter Dev и добавить адрес веб-сайта. Я знаю, что это кажется глупым, но это решит вашу проблему.
- https://apps.twitter.com/
- Перейдите на вкладку "Настройки"
- Установите URL-адрес CallBack на любой веб-сайт. Даже если это не реально.
Это должно решить вашу проблему.
Ответ 2
Я решил свою проблему так, как описал Патрик 1 год назад. Сегодня я снова столкнулся с тем же вопросом, но на этот раз я обнаружил, что проблема была вызвана из-за установки даты/времени на моем компьютере.
Поскольку дата/время на этом компьютере обычно не синхронизированы, мне пришлось перейти на вкладку "Изменить дату и время" → "Время в Интернете" и включить синхронизацию с Интернетом.