2014-02-08 47 views
36

我使用Owin中间件建立了OAuth验证,该验证基于使用“个人帐户”验证启动新Web项目时创建的默认项目。Asp.Net MVC 5 Owin Twitter验证投掷401例外

我已经调整了它一下,但Facebook和谷歌都在工作的伟大,但是,当我在“推特”按钮,单击发出挑战,它抛出一个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调用返回成功代码:

Stack Trace

任何想法?

回答

65

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

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

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

+0

哇。辉煌 - 谢谢! – MikeAtCodeSmart

+7

可选字段不可选。哈哈! – JoshYates1980

+4

仅供参考在设置网址后大约需要5分钟才能生效。我在这一天浪费了一天的时间。 –

2

我解决了我的问题帕特里克在1年前描述的方式。今天我再次遇到同样的问题,但这次我发现问题是由于我的电脑中的日期/时间设置造成的。 由于此计算机中的日期/时间通常不同步,因此我必须转到“更改日期和时间设置” - >“Internet时间”选项卡并启用Internet同步。