配置 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 查询用户的个人资料信息,例如他们的姓名和头像网址。