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

spa*_*man 3 asp.net-mvc asp.net-mvc-5

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

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

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

另外,我将如何要求他们的谷歌帐户图片?

小智 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);
Run Code Online (Sandbox Code Playgroud)


jd4*_*d4u 6

您可以从ClaimIdentity中将其作为电子邮件声明进行检索

检查此示例

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

  • http://stackoverflow.com/questions/17937553/get-extradata-from-mvc5-framework-oauth-owin-identity-provider-with-external-aut/18833978#18833978 (2认同)