首页 > 解决方案 > URL 被阻止:此重定向失败,因为重定向 URI 未在应用的客户端 OAuth 设置中列入白名单

问题描述

在此处输入图像描述每当我使用 facebook 登录时,我都会创建 asp.net 5.0 项目,此错误将显示 URL Blocked: This redirect failed 因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。确保客户端和 Web OAuth 登录已打开,并将所有应用程序域添加为有效 OAuth 重定向 URI。

string appid = string.Empty;
        string appsecret = string.Empty;

        public ContactUsController()
        {
            var configuration = GetConfiguration();
            appid = configuration.GetSection("AppID").Value;
            appsecret = configuration.GetSection("AppSecret").Value; 
        }

        public IConfiguration GetConfiguration()
        {
            var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
            return builder.Build();
        }
        private Uri RedirectUri
        {
            get
            {
                var uriBuilder = new UriBuilder(Request.Headers["Referer"].ToString());
                uriBuilder.Query = null;
                uriBuilder.Fragment = null;
                uriBuilder.Path = Url.Action("FacebookCallback");
                return uriBuilder.Uri;
            }
        }
        public IActionResult Facebook()
        {
            var fb = new FacebookClient();
            var loginurl = fb.GetLoginUrl(new
            {
                client_id = appid,
                client_secret = appsecret,
                redirect_uri = RedirectUri,
                response_type = "code",
                scop="email"
            }) ;
            return Redirect(loginurl.AbsoluteUri);
        }
        public IActionResult FacebookCallback(string code)
        {
            var fb = new FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id = appid,
                client_secret = appsecret,
                redirect_uri = RedirectUri,
                code = code
            });
            var accessToken = result.access_token;
            fb.AccessToken = accessToken;
            dynamic data = fb.Get("me?fields = link,first_name,currency,last_name,emial,gender,locale,timezone,verified,picture,age_range");
            TempData["email"] = data.email;
            TempData["name"] = data.first_name + data.last_name;
            TempData["picture"] = data.picture;
            return RedirectToAction("Index", "ContactUs");
        }

标签: c#asp.net-coreasp.net5

解决方案


推荐阅读