无法通过查询字符串从url获取参数

时间:2014-10-25 21:44:52

标签: c# asp.net google-api query-string google-login

我正在我的网站上实施谷歌登录 问题是当谷歌将我重定向回我的网站时(确认后)我无法从查询字符串中获取访问令牌。
这是URL:

http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600

我怀疑这个#state=/profile会产生一些问题,但无法解决问题 我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您可以使用

document.URL获取网址。

然后按#state = / profile&

拆分网址

然后数组的第二部分由&。

分割

然后每个部分由first =

分割

可能有更优雅的解决方案,但这应该有效。

答案 1 :(得分:1)

如果网址是这样的,请注意Default.aspx后面有,它不是,那么就没有直接获取获取查询字符串的方法(它们被称为 URL片段而非查询字符串),它们应在客户端进行解析,而服务器端无法访问URL Fragments。< / p>

http://localhost/mysite/west/Default.aspx#state=/profile&access_token=ya29.qQDrtcVtgOEbS86Bg10puFG3dksJz74BlrEGulHldlJW2o5qQ6g7ilF17zQsm8iMLG0C82PQyp2Z-g&token_type=Bearer&expires_in=3600

链接在网页上包含#,表示锚点,位置。浏览器向服务器发送GET请求,该请求仅包含整个页面的地址,没有锚点,片段或其他内容。当服务器返回页面时,浏览器知道它的位置,以便锚点的位置可见。在客户端或Javascript中,它可以访问锚点。

阅读本文 - How to get Url Hash (#) from server side