ASP.NET 使用自定义身份验证不会收到来自 Google OAuth 的电子邮件

ASP.NET with custom authentication won't get email from Google OAuth

我的 ASP.NET MVC 系统不使用 ASP.NET 身份,所以我使用了完整的自定义 IPrincipal 实现。我必须使用 Google OAuth 在 Google 上进行身份验证,然后在我的外部登录回调中处理我自己的业务。

问题是,在用户输入 Google 的电子邮件和密码并成功登录后,在我的外部登录回调中,我的应用程序无法从 [=46] 获取用户声明=]().身份验证。声明是空的,我只需要用户的电子邮件。

这是我的Startup.Auth.cs

登录后没有邮箱

假设 Google 的 OAuth 没有错误,我做错了什么?

还有一件事:有时(在其他计算机上测试)索赔会连同用户的邮件和其他一些数据一起返回给我。但是当我尝试使用许多不同的邮件登录时,它们也停止工作了。

下面是我的 Google API 配置,我启用了 Google+ API,但这似乎没有什么不同。

编辑

有时它适用于 Chrome 的匿名导航。

对 google api 身份验证使用异步等待方法,就像 google 文档

https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth