我已在网上搜索以下代码以获取代码信息,但我有一些问题
1)facebook.Options.Scope.Add("email")
:如何确定将哪些内容放入电子邮件中?例如,如果我需要名字或名字,我该怎么办?
2)ext.Claims.First(x => x.Type.Contains("email")).Value;
我如何在这里确定电子邮件?让我们说我想要名字,我怎么知道名字是firstname的名字的第一个名字
var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions()
{
AppId = "AppId",
AppSecret = "AppSecret"
};
facebookOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookOptions);
ClaimsIdentity ext = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var email = ext.Claims.First(x => x.Type.Contains("email")).Value;
答案 0 :(得分:1)
您无法直接从通过facebookOptions范围添加的声明中获取所有Facebook个人资料信息。您必须添加如下所示的范围并使用FacebookClient作为解释。
var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions()
{
AppId = "AppId",
AppSecret = "AppSecret"
};
facebookOptions.Scope.Add("email");
facebookOptions.Scope.Add("public_profile");
app.UseFacebookAuthentication(facebookOptions);
然后您可以使用FacebookClient获取Facebook用户信息。
[Authorize]
public async Task<ActionResult> FacebookInfo()
{
var claimsforUser = await UserManager.GetClaimsAsync(User.Identity.GetUserId());
var access_token = claimsforUser.FirstOrDefault(x => x.Type == "FacebookAccessToken").Value;
var fb = new FacebookClient(access_token);
dynamic myInfo = fb.Get("/me"); **// Check this with Facebook api to get profile information.**
}
请注意:如果您只需要获取Facebook用户的全名,然后检查您的声明,您就会看到用户的全名。
希望这有帮助,