加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何使用ASP.NET MVC 5和OWIN获取Facebook的第一

发布时间:2020-12-16 00:23:15 所属栏目:asp.Net 来源:网络整理
导读:我知道提供了一个“名称”字段,但我更愿意明确地访问第一个和最后一个名字。有人可以帮忙吗?我仍然围着ASP.Net MVC包围我的头。 解决方法 在您的Startup.Auth.cs ConfigureAuth(IAppBuilder app)方法中,为Facebook设置以下内容: var x = new FacebookAut
我知道提供了一个“名称”字段,但我更愿意明确地访问第一个和最后一个名字。有人可以帮忙吗?我仍然围着ASP.Net MVC包围我的头。

解决方法

在您的Startup.Auth.cs ConfigureAuth(IAppBuilder app)方法中,为Facebook设置以下内容:
var x = new FacebookAuthenticationOptions();
        x.Scope.Add("email");
        x.AppId = "*";
        x.AppSecret = "**";
        x.Provider = new FacebookAuthenticationProvider()
        {
            OnAuthenticated = async context =>
                {
                    context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken",context.AccessToken));
                    foreach (var claim in context.User)
                    {
                        var claimType = string.Format("urn:facebook:{0}",claim.Key);
                        string claimValue = claim.Value.ToString();
                        if (!context.Identity.HasClaim(claimType,claimValue))
                            context.Identity.AddClaim(new System.Security.Claims.Claim(claimType,claimValue,"XmlSchemaString","Facebook"));

                    }

                }
        };

        x.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
        app.UseFacebookAuthentication(x);
        /*
        app.UseFacebookAuthentication(
           appId: "*",appSecret: "*");
         * */

然后使用它访问用户的登录信息:

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

然后以下获得名字:

var firstNameClaim = loginInfo.ExternalIdentity.Claims.First(c => c.Type == "urn:facebook:first_name");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读