配置 OAuth 提供程序

你需要从你选择的 OAuth 提供商处获取一些详细信息。我们将关注谷歌,但 ASP.NET 的设立也允许开箱即用的 Twitter,Facebook 和微软(显然)。

你需要访问 Google 开发者控制台( https://console.developers.google.com/) 并创建项目,启用 Google+ API(用于获取用户的个人资料信息,例如他们的姓名和头像)和在凭据部分中创建新的 OAuth 2 客户端 ID。授权的 JavaScript 起源应该是你项目的根 URL(例如 https://yourapi.azurewebsites.net) ,重定向 URI 需要包含 ASP 的内置 Google 回调端点( https://yourapi.azurewebsites.net/signin-google ) 以及你选择的回调路线( https://yourapi.azurewebsites.net/callback) 。如果出现这些错误,将导致 Google 出现异议。

返回 Visual Studio 项目,打开 App_Start> Startup.Auth.cs。使用下面的代码替换底部带注释的 Google 部分,从 Google Developers Console 添加 ID 和密码:

var googleAuthOptions = new GoogleOAuth2AuthenticationOptions()
{
      ClientId = "YOUR ID",
      ClientSecret = "YOUR SECRET",
            Provider = new GoogleOAuth2AuthenticationProvider()
            {
                  OnAuthenticated = (context) =>
                  {
                        context.Identity.AddClaim(new Claim("urn:google:name", context.Identity.FindFirstValue(ClaimTypes.Name)));
                        context.Identity.AddClaim(new Claim("urn:google:email", context.Identity.FindFirstValue(ClaimTypes.Email)));
                        //This following line is need to retrieve the profile image
                        context.Identity.AddClaim(new Claim("urn:google:accesstoken", context.AccessToken, ClaimValueTypes.String, "Google"));
                        return System.Threading.Tasks.Task.FromResult(0);
                  }
            }
      };
app.UseGoogleAuthentication(googleAuthOptions);

通过这些附加声明,你可以向 Google 查询用户的个人资料信息,例如他们的姓名和头像网址。