ASP.NET核心 - 在Facebook Signon重定向中发送的哈希字符(#)引起了问题



我想通过新的ASP.NET Core应用程序在Facebook上签名用户。由于多种原因,我没有使用SDK。一切都很好。我将用户重定向到页面上的Facebook登录。用户登录。Facebook重定向到以下URI字符串,在重定向后,我从浏览器中复制了该字符串:

http://localhost:5000/signonok?#state=testsession&access_token=bbbbtokeneeee&expires_in=510000

signOnokController激活,但查询集合是空的,Querystring为"?"。看来字符串中的哈希字符(#)导致ASP.NET停止进一步解析。我在httpcontext周围翻阅了几个小时,找不到状态,access_token或expires_in键值对。

没有抛出错误或记录到记录器的问题。

我认为也许我可以通过将自己的中间件功能插入管道中获取信息,或重新格式化URI。怀疑我得到了相同的结果。

我的猜测是,在我这方面解决这个问题要比让Facebook改变他们的响应要容易。

在这种情况下,我宁愿避免使用

Java脚本,再次出于多种原因,此处无关。

关于如何处理这个#角色的任何想法?我做错了一些导致它发射的事情,或者我必须弄清楚如何在管道中消耗URI。

欢呼...

看来,字符串中的哈希字符(#)导致asp.net停止进一步解析。

URL的哈希部分甚至都不是发送到服务器;在这里您的代码没有什么。

我的猜测是,在我这方面解决这个问题要比让Facebook改变他们的响应要容易。

您所要做的就是在登录对话框中传递response_type的正确值,请访问https://developers.facebook.com/docs/facebook-login/manaly-build-a-build-a-login-flow#low#low.low#login:

response_type
确定重定向到应用程序发生时是否包含的响应数据是在URL参数或片段中。

您可以使用RAWURL属性获得原始的,无与伦比的URL。从那里您可以:

  1. 删除#符号并用一些代码解析其余参数,或

  2. 发行自我重新定位,通过清洁的URL。当您的服务器接收重定向时,您可以使用通常的含义访问Querystring参数。

最新更新