Owin第三方登录Google或Facebook重定向失败(/Account/ExternalLoginCallback不工作)C#MVC

Owin第三方登录Google或Facebook重定向失败(/Account/ExternalLoginCallback不工作)C#MVC,c#,model-view-controller,login,owin,C#,Model View Controller,Login,Owin,当我们在本地服务器上测试我们的程序时,第三方登录可以正常工作,但当我们将其发布到实际服务器上时,情况并非如此。当我们在实际服务器上使用第三方登录时,它不起作用 到目前为止,我们知道我们的服务器提供商使用https,而我们的IIS服务器设置使用http。这可能是原因吗?如果没有,你知道我们遇到了什么问题吗 以下是我们在Facebook第三方登录页面上输入帐户时的URL: https://www.facebook.com/login.php?skip_api_login=1&api_key=

当我们在本地服务器上测试我们的程序时,第三方登录可以正常工作,但当我们将其发布到实际服务器上时,情况并非如此。当我们在实际服务器上使用第三方登录时,它不起作用

到目前为止,我们知道我们的服务器提供商使用https,而我们的IIS服务器设置使用http。这可能是原因吗?如果没有,你知道我们遇到了什么问题吗

以下是我们在Facebook第三方登录页面上输入帐户时的URL:

https://www.facebook.com/login.php?skip_api_login=1&api_key=569249369941462&signed_next=1&next=https%3A%2F%2Fwww.facebook.com%2Fv2.8%2Fdialog%2Foauth%3Fredirect_uri%3Dhttp%253A%252F%252Fwww.ipce.com.tw%252Fsignin-facebook%26state%3DwXOgKtgLeatXfqXP-Cv-Rc5EJu7AYiWQyqyN4bqtWfgZr6ncxzc9uerpXv4uSKZoSUQpWwO5AUt2YksiIP3q05GhjVUoT94kMZD5E57a2PgMaJT8oSrXh1K9lrH3g88DF0M2jtGX-DWJl-UJ66g_neu5xx1pGsIc3NBvblBjQfWM_rR6Vt8qB16GTCMqxSsQXhH4UXRDuQY5eBLSUKS7W0SRJMzDNClgMRT-VTZ7Gvv4oYTEAXnFG6qmh41o-xT5%26scope%3Demail%26response_type%3Dcode%26client_id%3D569249369941462%26ret%3Dlogin%26logger_id%3D2a07ffc7-acf8-ad97-0b9f-b45dcff38b39&cancel_url=http%3A%2F%2Fwww.ipce.com.tw%2Fsignin-facebook%3Ferror%3Daccess_denied%26error_code%3D200%26error_description%3DPermissions%2Berror%26error_reason%3Duser_denied%26state%3DwXOgKtgLeatXfqXP-Cv-Rc5EJu7AYiWQyqyN4bqtWfgZr6ncxzc9uerpXv4uSKZoSUQpWwO5AUt2YksiIP3q05GhjVUoT94kMZD5E57a2PgMaJT8oSrXh1K9lrH3g88DF0M2jtGX-DWJl-UJ66g_neu5xx1pGsIc3NBvblBjQfWM_rR6Vt8qB16GTCMqxSsQXhH4UXRDuQY5eBLSUKS7W0SRJMzDNClgMRT-VTZ7Gvv4oYTEAXnFG6qmh41o-xT5%23_%3D_&display=page&locale=zh_TW&logger_id=2a07ffc7-acf8-ad97-0b9f-b45dcff38b39
这是我们登录后的URL,返回主页,但不调用/Account/ExternalLoginCallback

https://www.ipce.com.tw/?code=AQAUdHG-r1AxBOy1xkVm4sklkq-tBKn-9c_PAYqqpZmwiseTcKWAnTRJkoyeoZkiwReg_x7VSnMymQiWgqp0ZdnhlH1ypijH-FSyaca5BDCMJUS04x05CNVjrN5HvuRXdVJkv2OHwzqkTSWvkwC6S58nrRckIjroKjjGDqaWvldOt_0g8nFe_ZvLovj_hbdQs5SPE4M97CpPrm0ExudeEddEo1zn29RIMabS204kF445Hn73X90RTy7WpIqAINpcIIwK4XeAQMcoqoBQinaVRyjrNxjvKoAEXqBPBKKkdJn7u3bx94rFZXqHGGMJ6uth0rBSpDPJgtq0M1XMmYXfESjS&state=wXOgKtgLeatXfqXP-Cv-Rc5EJu7AYiWQyqyN4bqtWfgZr6ncxzc9uerpXv4uSKZoSUQpWwO5AUt2YksiIP3q05GhjVUoT94kMZD5E57a2PgMaJT8oSrXh1K9lrH3g88DF0M2jtGX-DWJl-UJ66g_neu5xx1pGsIc3NBvblBjQfWM_rR6Vt8qB16GTCMqxSsQXhH4UXRDuQY5eBLSUKS7W0SRJMzDNClgMRT-VTZ7Gvv4oYTEAXnFG6qmh41o-xT5#/_=_
我尝试将http强制转换为https,但发生了服务器错误500,我无法找到其他方法来解决此问题

谁来帮帮我

尝试1

我将localhost服务器路由设置为:

routes.MapRoute(
     name: "SigninFacebook",
     url: "signin-facebook",
     defaults: new { controller = "Member", action = "ExternalLoginCallback" }
);
它起作用了!但它响应HTTP错误500

我尝试将该设置应用于实际服务器,但什么也没发生。 它仍然重定向到我们的主页,而ExternalLoginCallback仍然没有调用。
我怀疑我们的实际服务器没有登录facebook路由。

我想这是因为您提供了重定向uri=localhost

此参数用于在第三方成功登录后重定向浏览器页面,以提供从Facebook到服务器的身份验证代码

它在您的测试环境中工作,因为您的Web服务器是本地的,所以浏览器可以执行重定向到本地主机


但是在生产环境中,应该使用真实的域名而不是本地主机。

我已经编辑了帖子,更改为实际的URL,请再次查看,谢谢!如果我没有弄错的话,您的重定向url包含GET参数(?state=…等等),这使得您的最终请求字符串有点奇怪。因此,尝试将重定向url请求传递参数简化为url路径的一部分,并在控制器中使用Route属性[Route(“signin facebook/{state}/{…}”)]转换它们。我尝试了您的建议,并再次编辑了帖子。谢谢