我正在尝试使用OWIN Security从Google OAuth握手中检索其他信息。
我有以下内容要求Google提供用户个人资料声明,而Google权限页面则反映了请求此声明。
var googleConfig = new Microsoft.Owin.Security.Google.GoogleOAuth2AuthenticationOptions
{
ClientId = ClientId",
ClientSecret = "Secret"
};
googleConfig.Scope.Add("https://www.googleapis.com/auth/userinfo.profile");
app.UseGoogleAuthentication(googleConfig);
但是,当我使用AuthenticationManager.GetExternalLoginInfoAsync();
收到回复时,用户只有一个名称声明。
在登录时从谷歌取回用户个人资料数据需要做什么?
答案 0 :(得分:1)
您需要访问提供商的OnAuthenticate事件中的其他声明。在那里,上下文参数包含您在范围中要求的这些附加属性。例如,使用Facebook时:
var fb = new FacebookAuthenticationOptions
{
AppId = "...",
AppSecret = "...",
AuthenticationType = "Facebook",
SignInAsAuthenticationType = "ExternalCookie",
Provider = new FacebookAuthenticationProvider
{
OnAuthenticated = async ctx =>
{
if (ctx.User["birthday"] != null)
{
ctx.Identity.AddClaim(new Claim(ClaimTypes.DateOfBirth, ctx.User["birthday"].ToString()));
}
}
}
};
fb.Scope.Add("user_birthday");
app.UseFacebookAuthentication(fb);