AuthenticationResult.IsSuccessful开始为谷歌返回false

时间:2014-01-26 23:50:20

标签: c# asp.net-mvc-4 openid dotnetopenauth google-openid

今天,在我的实际网站上没有任何更改,使用Google外部登录提供商登录停止了工作。这只发生在有谷歌登录的用户,其他提供商都没问题。这也只发生在实际站点上,我的dev机器运行相同代码的调试版本就可以了。

我的代码类似于示例MVC应用程序:

public ActionResult ExternalLoginCallback( string returnUrl )
{
    ...
    AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication( Url.Action(   "ExternalLoginCallback", new { ReturnUrl = returnUrl } ) );
    if( !result.IsSuccessful )
    {
       return RedirectToAction( "ExternalLoginFailure" );
    }
}

我看了一下空的result.error。

我需要注意哪些事情发生了变化?我可以从1月4日here看到类似的问题。我想这与我的实现有关,而不是谷歌范围的问题,因为我仍然能够登录使用我的谷歌开放ID的SO。

我正在使用Log4Net并接收DotNetOpenAuth日志,但是没有错误,因此它与此answer不同。

我尝试从4.3.0.13117升级到最新的Nuget(4.3.4.13329),但这没有效果。我似乎也找不到4.3.4.13329源in the repository的标签。我将尝试下载并构建4.3.0.13117以查看是否可以找到原因。唯一的问题是,这在我的本地计算机上运行良好的测试,我不确定我想在现场网站上放置调试DLL。

1 个答案:

答案 0 :(得分:2)

嗯,已经有几个星期了,所以我想我会记录下我为解决这个问题而采取的措施,以防其他人帮忙。作为背景信息,我使用的是Visual Studio 2012.

  1. 发现OpenID 2.0 + OAuth 1.0已弃用。见here。该服务尚未停止,但我担心我看到服务有所退化,因为这是一种过时的方法。
  2. 从MVC4升级到MVC5。见here
  3. 使用DotNetOpenAuth.GoogleOAuth2库。见here
  4. 将我的网站转换为https。请参阅herehere
  5. 现在我已经完成了一切似乎工作正常。