Alex Wheat の回答を使用して、Google 認証を使用して google+ プロファイル、性別、電子メールを取得するソリューションを思いつきました。
Startup.Auth.cs:
var googleOptions = new GoogleOAuth2AuthenticationOptions()
{
ClientId = "<<client id - google>>",
ClientSecret = "<<secret for your app>>",
Provider = new GoogleOAuth2AuthenticationProvider()
{
OnAuthenticated = context =>
{
var userDetail = context.User;
context.Identity.AddClaim(new Claim(ClaimTypes.Name,context.Identity.FindFirstValue(ClaimTypes.Name)));
context.Identity.AddClaim(new Claim(ClaimTypes.Email,context.Identity.FindFirstValue(ClaimTypes.Email)));
var gender = userDetail.Value<string>("gender");
context.Identity.AddClaim(new Claim(ClaimTypes.Gender, gender));
var picture = userDetail.Value<string>("picture");
context.Identity.AddClaim(new Claim("picture", picture));
return Task.FromResult(0);
},
},
};
googleOptions.Scope.Add("https://www.googleapis.com/auth/plus.login");
googleOptions.Scope.Add("https://www.googleapis.com/auth/userinfo.email");
app.UseGoogleAuthentication(googleOptions);
拡張プロファイル データにアクセスするには、リクエストに 2 つのスコープ (plus.login と userinfo.email) を追加する必要があります。plus.login スコープのみを追加すると、ユーザーの電子メールを表示できなくなります。認証に ASP.NET MVC5 の既定のテンプレートを使用すると、ユーザーの電子メール、名前、姓、および google+ プロファイル アドレスのみが表示されます。ここに示す方法を使用すると、ユーザーの画像リンクにもアクセスできます。
context.User プロパティは、ネットワーク経由で送信されるユーザー データの JSON シリアル化を保持し、ユーザーがキーでプロパティを検索できるようにする便利なメソッドを備えています。
ログイン スコープの概念について詳しくは、
https ://developers.google.com/+/api/oauth#login-scopes をご覧ください。