gpt4 book ai didi

c# - Asp.net web 表单、Asp Identity - 如何存储来自 Facebook、Twitter 等的声明

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:03 24 4
gpt4 key购买 nike

如何使它适用于标准 Web 表单?

我想做的是根据我从 Facebook(或其他服务)返回的声明填充 AspNetUserClaims 表。我可以在下面的 OnAuthenticated 代码中看到返回的值,如何将这些声明添加到当前登录用户的上下文中?


当前在 OnAuthenticated 触发后,它显然将我返回到内置示例提供的页面 (RegisterExternalLogin.aspx)。但是,声明消失了,登录 Facebook 的上下文也消失了。

如何在不使用 MVC 的情况下根据当前登录用户的上下文将来自 Facebook 的声明填充到 AspNetUserClaims 表中?

        var fboptions = new FacebookAuthenticationOptions();
fboptions.AppId = "xxxxxxxxxxxxxxxxxxx";
fboptions.AppSecret = "yyyyyyyyyyyyyyyyyyyyyy";
fboptions.Scope.Add("email");
fboptions.Scope.Add("friends_about_me");
fboptions.Scope.Add("friends_photos");

fboptions.Provider = new FacebookAuthenticationProvider()
{
OnAuthenticated = (context) =>
{
foreach (var v in context.User)
{
context.Identity.AddClaim(new System.Security.Claims.Claim(v.Key, v.Value.ToString()));
}
context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken));
return Task.FromResult(0);
},
};
app.UseFacebookAuthentication(fboptions);

最佳答案

我不能直接回答 webforms,MVC 的过程应该是相似的。

登录后,通过使用外部提供商,用户将被定向到您注册新用户的页面。从该页面回发后,必须添加一行以再次获取 ClaimsIdentity,例如:

ClaimsIdentity claimsIdentity = await
AuthenticationManager.GetExternalIdentityAsync (
DefaultAuthenticationTypes.ExternalCookie);

如果没有调用上面的这一行,它对我来说根本不起作用,所以也许这就是你的问题所在。

一旦有了 ClaimsIdentity 迭代,就可以完成对身份的 Claims 属性的声明集合。这应该包括您在 OnAuthenticated 回调委托(delegate)中添加的 Facebook token 。您所要做的就是调用 UserManager.AddClaimAsync() 将其添加到 Claims 数据库表中。

有关更多信息,请查看我的 AccountControllerhttps://github.com/beabigrockstar/AspNetIdentitySocialProfileImage/blob/master/Controllers/AccountController.cs

具体看方法

 ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model,
string returnUrl)

以及对 StoreAuthTokenClaims() 的调用,当然还有我在 StoreAuthTokenClaims() 中遵循的过程。

关于c# - Asp.net web 表单、Asp Identity - 如何存储来自 Facebook、Twitter 等的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com