在mvc 5中使用google auth时如何检索电子邮件地址?

时间:2013-10-14 20:54:14

标签: asp.net-mvc asp.net-mvc-5

我只在我的asp.net mvc 5应用中启用了Google Auth。 我看到当我被重定向到googles auth屏幕时,我要求获得查看用户名和电子邮件地址的权限。然后我从Google返回,登录,并为我的新用户命名。

我显然已经要求查看电子邮件地址的权限,但默认情况下不存储。我如何将它存储在用户表中?

我已尝试在startup.auth中编辑选项,但没有任何与电子邮件有关的内容。通过oAuth执行此操作时,您手动要求它。我只是不知道我应该在哪里询问电子邮件地址......

另外,我将如何查询他们的Google帐户图片?

2 个答案:

答案 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中检索为电子邮件声明

Check this example

var email = externalIdentity.FindFirstValue(ClaimTypes.Email);