如何在AspNet.Identity版本3 / ASP.Net MVC6 / VNext中检索FacebookAccessToken?

时间:2015-05-21 10:31:26

标签: facebook asp.net-core-mvc

以前,我可以调用info.ExternalIdentity.FindAll(“FacebookAccessToken”)。

在AspNet.Identity版本3中,我无法使用SignInManager找到存储在任何地方的访问令牌。我也不能再使用来自ExternalIdentity的FindAll了。

我还可以在ASP.Net MVC6项目中检索Facebook Access Token吗?

1 个答案:

答案 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中找到访问令牌。