3

I have enabled Google Auth only within my asp.net mvc 5 app. I see that when I am redirected to googles auth screen I am asking for permission to view the users name and email address. I then return from Google, log in, and name my new user.

I have obviously asked for permission to view the email address, but by default this is not stored. How would I store this in the users table?

I have tried editing the options in startup.auth, but there aren't any pertaining to the email. When doing this via oAuth you manually ask for it. I just don't know where exactly I should be asking for the email address...

Also how would I go about asking for their google account picture?

spaceman
  • 1,628
  • 1
  • 16
  • 19

2 Answers2

8

Full code in 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);
tomrozb
  • 25,773
  • 31
  • 101
  • 122
Yoko2012
  • 103
  • 6
7

You can retrieve it from ClaimIdentity as an Email Claim

Check this example

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

jd4u
  • 5,789
  • 2
  • 28
  • 28