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

Posted

技术标签:

【中文标题】Asp.Net MVC 5 Owin Twitter Auth 抛出 401 异常【英文标题】:Asp.Net MVC 5 Owin Twitter Auth throwing 401 Exception 【发布时间】:2014-03-06 05:59:44 【问题描述】:

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

我对其进行了一些调整,但 Facebook 和 Google 运行良好,但是,当我点击“twitter”按钮发出挑战时,它会抛出 500 http 异常并显示错误消息:

响应状态码不表示成功:401(未授权)。

这仅出现在 Twitter 上。这是我的身份验证配置:

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

您需要进入 Twitter 开发应用程序并添加一个网站地址。我知道这看起来很傻,但这会解决你的问题。

    https://apps.twitter.com/ 转到设置选项卡 为任何网站设置回调 URL。即使它不是真实的。

这应该可以解决你的问题。

【讨论】:

非可选字段。哈哈! FYI 设置 url 后大约需要 5 分钟才能生效。我为此浪费了一天时间。 谢谢你没有让我在这上面浪费一天的时间! 并确保apps.twitter设置页面中的“启用回调锁定”为假,否则你的动态回调无论如何都会关闭【参考方案2】:

我按照 Patrick 一年前描述的方式解决了我的问题。今天我再次遇到同样的问题,但这次我发现问题是由于我的计算机中的日期/时间设置引起的。 由于这台计算机中的日期/时间通常不同步,我不得不转到“更改日期和时间设置”->“互联网时间”选项卡并启用互联网同步。

【讨论】:

以上是关于Asp.Net MVC 5 Owin Twitter Auth 抛出 401 异常的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net MVC 5 SPA 模板 OWin /token 导致“invalid_client”

如何在 OWIN ASP.NET MVC5 中注销用户

MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

ASP.NET MVC5 OWIN Facebook 身份验证突然不起作用

ASP.NET MVC 5 中的基本身份验证

Owin管道与asp.net管道模型