以前,我可以调用info.ExternalIdentity.FindAll(“ FacebookAccessToken”)。
在AspNet.Identity版本3中,我找不到使用SignInManager存储在任何地方的访问令牌。我也无法再使用ExternalIdentity的FindAll。
我仍然可以在ASP.Net MVC6项目中检索Facebook访问令牌吗?
您可以通过将访问令牌包含在Claims集合中来访问它。
您必须通过FacebookAuthenticationNotifications OnAuthenticated事件利用Facebook响应到ClaimsIdentity对象的映射。在Startup.cs文件中:
services.Configure<FacebookAuthenticationOptions>(options =>
{
options.AppId = Configuration["Authentication:Facebook:AppId"];
options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
options.Scope.Add("user_birthday");
options.Notifications = new FacebookAuthenticationNotifications
{
OnAuthenticated = async context => {
var accessToken = context.AccessToken;
var identity = (System.Security.Claims.ClaimsIdentity)context.Principal.Identity;
identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken));
}
};
});
然后,您将能够在ExternalIdentity中找到访问令牌。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句