我只在我的asp.net mvc 5应用中启用了Google Auth。 我看到当我被重定向到googles auth屏幕时,我要求获得查看用户名和电子邮件地址的权限。然后我从Google返回,登录,并为我的新用户命名。
我显然已经要求查看电子邮件地址的权限,但默认情况下不存储。我如何将它存储在用户表中?
我已尝试在startup.auth中编辑选项,但没有任何与电子邮件有关的内容。通过oAuth执行此操作时,您手动要求它。我只是不知道我应该在哪里询问电子邮件地址......
另外,我将如何查询他们的Google帐户图片?
答案 0 :(得分:7)
aspnet mvc5中的完整代码
var googleOption=new GoogleAuthenticationOptions()
{
Provider = new GoogleAuthenticationProvider()
{
OnAuthenticated = (context) =>
{
var rawUserObjectFromFacebookAsJson = context.Identity;
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)));
return Task.FromResult(0);
}
}
};
app.UseGoogleAuthentication(googleOption);
答案 1 :(得分:6)
您可以将其从ClaimIdentity中检索为电子邮件声明
var email = externalIdentity.FindFirstValue(ClaimTypes.Email);