我正在我的网站上实现谷歌登录
问题是,当谷歌将我重定向回我的网站(确认后)时,我无法从查询字符串中获得访问令牌
这是URL:
http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600
我怀疑这个#state=/profile
会引起一些问题,但无法处理。
我是不是错过了什么?
如果URL是这样的,请注意Default.aspx
后面有#,它不是,那么就没有直接的方法来获取querystring(它们被称为URL片段而不是querystring),它们意味着在客户端进行解析,而服务器端无法访问URL Fragments
。
http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600
链接包含#,表示网页上的锚、位置。浏览器向服务器发送一个GET请求,该请求只包含整个页面的地址,不包含锚点、片段或其他内容。当服务器返回页面时,浏览器知道将其定位在何处,以便可以看到锚点的位置。在客户端或Javascript中,这是可能的,因为它可以访问锚点。
阅读此-如何从服务器端获取Url哈希(#)
您可以使用
document.URL获取URL。
然后通过#state=/profile&
然后数组的第二部分由&。
然后每个部分按第一个=划分
可能有一个更优雅的解决方案,但这应该有效。