AuthenticationResult.IsSuccessful开始为谷歌返回false

今天,在我的实际网站上没有任何更改,使用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日看到类似的问题。 我想这与我的实现有关,而不是谷歌范围的问题,因为我仍然可以登录使用我的谷歌开放ID的SO。

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

我尝试从4.3.0.13117升级到最新的Nuget(4.3.4.13329),但这没有效果。 我似乎也无法在存储库中找到4.3.4.13329源代码的标记。 我将尝试下载并构建4.3.0.13117以查看是否可以找到原因。 唯一的问题是,这可以在我的本地计算机上进行良好的测试,我不确定我是否想在现场网站上安装调试DLL。

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

  1. 发现OpenID 2.0 + OAuth 1.0已被弃用。 看到这里 。 该服务尚未停止,但我担心我看到服务有所退化,因为这是一种过时的方法。
  2. 从MVC4升级到MVC5。 看到这里 。
  3. 使用DotNetOpenAuth.GoogleOAuth2库。 看到这里 。
  4. 将我的网站转换为https。 看到这里和这里 。

现在我已经完成了一切似乎工作正常。