3

我只在我的 asp.net mvc 5 应用程序中启用了 Google Auth。我看到当我被重定向到谷歌身份验证屏幕时,我正在请求查看用户名和电子邮件地址的权限。然后我从 Google 返回,登录并命名我的新用户。

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

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

另外,我将如何询问他们的谷歌账户图片?

4

2 回答 2

8

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);
于 2013-12-04T09:54:05.090 回答
7

您可以从 ClaimIdentity 检索它作为电子邮件声明

检查这个例子

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

于 2013-10-15T07:40:41.560 回答