我想通过新的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。从那里您可以:
-
删除#符号并用一些代码解析其余参数,或
-
发行自我重新定位,通过清洁的URL。当您的服务器接收重定向时,您可以使用通常的含义访问Querystring参数。