以前,我可以调用info.ExternalIdentity.FindAll(“FacebookAccessToken”)。
在AspNet.Identity版本3中,我无法使用SignInManager找到存储在任何地方的访问令牌。我也不能再使用来自ExternalIdentity的FindAll了。
我还可以在ASP.Net MVC6项目中检索Facebook Access Token吗?
答案 0 :(得分:2)
您可以通过将访问令牌包含在声明集合中来访问它。
您必须通过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中找到访问令牌。