Asp.Net MVC 5 Owin Twitter Auth抛出401异常

39

我已经使用基于Owin中间件的OAuth身份验证设置了身份验证,基于使用“个人帐户”身份验证启动新Web项目时创建的默认项目。

我稍微调整了一下,但Facebook和Google都很好用,但是当我点击“Twitter”按钮发出挑战时,它会抛出500 http异常,并显示错误消息:

响应状态代码未表明成功:401(未经授权)。

这只在Twitter上出现。以下是我的auth配置:

// 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调用中返回成功代码:

堆栈跟踪

有什么想法吗?

2个回答

70

你需要进入 Twitter 开发者应用并添加一个网站地址。我知道这似乎很傻,但这将解决你的问题。

  1. https://apps.twitter.com/
  2. 进入 "设置" 选项卡
  3. 将回调 URL 设置为任何网站。 即使它不是真实存在的。

这将解决你的问题。


8
一个不是真正可选的可选字段。哈哈! - JoshYates1980
4
FYI,在您设置URL后,需要约5分钟才能生效。我就因此浪费了一整天时间。 - joe.feser
1
谢谢你不让我在这上浪费一天时间! - user1689571
请确保在"应用程序推特设置"页面中,"启用回调锁定"选项为false,否则你的动态回调函数将无法正常工作。 - st35ly

2

我用了Patrick在一年前描述的方法解决了我的问题。今天我又遇到了同样的问题,但这次我发现问题是由于电脑中的日期/时间设置引起的。 由于这台电脑上的日期/时间通常不同步,所以我不得不去"更改日期和时间设置" -> "Internet Time"选项卡并启用网络同步。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接