首页 文章

Asp.net核心使用Facebook外部登录时,redirect_url不正确

提问于
浏览
1

我正在一个项目中工作,需要使用asp.net核心登录到此tutorial .

一切似乎都很好,然后我部署到我的Ubuntu VPS . 由于kestrel服务器不是一个完整的Web服务器,因此我在https(443)上设置了Haproxy侦听程序,该程序通过端口1080(http)路由到asp.net核心应用程序 . 当我访问我的网站并点击Facebook登录按钮时,我会收到Facebook的错误消息:

URL已阻止:此重定向失败,因为重定向URI未在应用的客户端OAuth设置中列入白名单 . 确保启用了客户端和Web OAuth登录,并将所有应用程序域添加为有效的OAuth重定向URI .

我收到此错误消息,因为参数redirect_uri是 http ://而不是 https ,这预计从Facebook应用程序配置 .

任何想法如何解决它?

2 回答

  • 2

    好 . 我想到了 . 首先,我们需要安装此包Microsoft.AspNetCore.HttpOverrides . 然后将这段代码放在Startup.cs文件中

    app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });
    app.UseHttpMethodOverride();
    

    在线之前

    app.UseFacebookAuthentication(...)
    

    你可以找到更多here .

  • 1

    如果您没有指定请求方案的类型,这可能会生成一个使用https的呼叫,而另一个使用http生成,facebook将把它作为一个不同的URL .

    你只需要添加它

    app.Use((context, next) =>
           {
            context.Request.Scheme = "https";
            return next();
           });
    

    在“配置”方法下的启动类(Startup.cs)上 .

    请务必在此之前设置此代码 .

    app.UseFacebookAuthentication(fbOptions);
    

相关问题