ASP.NET身份验证添加更多范围的Facebook身份验证会导致错误的返回

时间:2014-11-17 18:02:39

标签: c# asp.net facebook asp.net-identity

我想检索Facebook的姓名和电子邮件信息并将其插入AspNetUsers表。

这就是为什么我将以下代码片段添加到Start.Auth;

//app.UseFacebookAuthentication(
        //   appId: WebConfigurationManager.AppSettings["appID"],
        //   appSecret: WebConfigurationManager.AppSettings["appSecret"]);

        var MoreFacebookOptions = new FacebookAuthenticationOptions
        {
            AppId = WebConfigurationManager.AppSettings["appID"],
            AppSecret = WebConfigurationManager.AppSettings["appSecret"]
        };
        MoreFacebookOptions.Scope.Add("email");
        MoreFacebookOptions.Scope.Add("first_name");
        MoreFacebookOptions.Scope.Add("middle_name");
        MoreFacebookOptions.Scope.Add("last_name");


        MoreFacebookOptions.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"));
                }

            }
        };

        MoreFacebookOptions.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
        app.UseFacebookAuthentication(MoreFacebookOptions);

点击Facebook登录按钮后,我将其重定向到(HTTP500网站无法显示页面);

https://www.facebook.com/dialog/oauth?response_type=code&client_id=340978152751092&redirect_uri=https%3A%2F%2Flocalhost%3A44302%2Fsignin-facebook&scope=email%2Cfirst_name%2Cmiddle_name%2Clast_name&state=bjxNOOZveDYKqquGVc1m-BAhDHwh11NwYeog2pEU0n9TC5WIsareAs2xWQPVV45hJNRrCdqHk7oPDwdk0Ijs1KvLslTntlGLHk0Gy24liyrzasOXlarh5HLehSoE6OJPWRa_jUsnEQBGpxhFqAoo3pqM2mw3oWNnyroC7CB2tZHFSxvdEhyABbwL9E0Nj5rvNLe0F1-zjpzM27WL1diDcQxbhQU7CUTPffBEqDBfXn-qEv8Uf6WnIkvYmTbluajf6peXNCFHhN3U7mrspeR87Q

如果我注释掉以下几行;

        MoreFacebookOptions.Scope.Add("first_name");
        MoreFacebookOptions.Scope.Add("middle_name");
        MoreFacebookOptions.Scope.Add("last_name");

一切正常,它会将我重定向到预期的网址;

https://localhost:44302/signin-facebook?code=AQBRSVZjeT8p8OL11cyfXBfQE7Y5rq42Zmt6aNoc4xli6Dmu9BqS_BERY09dT7P4COwSyIcj-8SJgK08jmPG5-sUe3Bl12thCamlhI1moiV-uJ0IcjHQWtiqeC5zzKgOylWmxMTwroHhHutWVLVFMLrhpBg0Xl1NH6LhmYI1MGZIge9qrHn9f4ZXf0s9rLttSUV5c1rJcnMtreDVww27iDgez8sEn2DcIGFsmwlfl4WTsNwg346x1nvrhoHMlEWXmok3SWDf5DREUjiaw6w0v3Uh3prJ_Pe26JdgySCqVEHDfY2O0H2Kql4dM8WQWpnpZpM&state=8eGRtf0oeiwqzS0qHCiWcsz-ZxMA9-DEK9GaTU5UENsi-vnfbaJSsxd57y_BtUF_PhQ9pD7TiYld4bFhytQE4KIACVSokTXfure0XJ5MCUGzoDPtN3ionRxFf2H5K4mu6hmclLvuRr4IPg_7g5InWP9TQZJLefOyQLqu21yOZeE0BnDIUcsP1nrL-dydghS62TrteN_XVk77upIN0L4f2V7jchL3u65l0spZdE337n19nRdB5oJbiBxEVCyKNbkqGF_kRxxs8NCsxSPVdci_Gw#_=_

它的原因是什么?

0 个答案:

没有答案