我正在测试一个基于 Qt 的 OAuth 库(https://github.com/pipacs/o2)。我正在针对作为提供商的Facebook测试 OAuth 2.0。
我正在测试协议的ImplicitGrant流程。在此流程中,如果客户端将 *request_type* 查询参数设置为token,则响应将作为 URL 片段包含并包含访问令牌。
Facebook 在浏览器中成功进行身份验证后,会通过重定向到我提供的 uri 进行响应,并在URL 片段中发送访问令牌。
例如:浏览器被重定向到:
http://mylocalserver.com:8888/#access_token=ABCDE&expires_in=5162322
mylocalserver.com=localhost
我在 Qt 中实现了一个小型 HTTP 服务器,它处理所有此类重定向。
问题是在获得传入连接时,即从在重定向上启动它的浏览器,当我从套接字读取数据时,我看到片段部分丢失了!例如:对于上面的本地 url,我看到的数据是:
获取/HTTP/1.1 主机:127.0.0.1:8888 用户代理:Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0 接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,放气 连接:保持活动
如您所见,该片段完全丢失。环顾这个问题,我发现 FF/Chrome 可能会将片段放在Location标头中。但我也没有看到。
关于片段丢失的原因以及如何取回/指示浏览器发送它的任何想法?