Reputation: 1648
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?
Upvotes: 3
Views: 6095
Reputation: 103
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);
Upvotes: 8
Reputation: 5807
You can retrieve it from ClaimIdentity as an Email Claim
var email = externalIdentity.FindFirstValue(ClaimTypes.Email);
Upvotes: 7