我正在与vk.com集成。他们的文档说明您将在授权后重定向到下一个URL
http://REDIRECT_URI#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492
重定向发生但我没有看到access_token,expires_in和user_id变量。我调查了HttpContext并没有找到这些参数。
这个HttpContext.Request.Url
只显示了我没有#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492
但是如果我用#替换#字符?在网址中它按预期工作。
我正在使用ASP.NET MVC中的vk api。有人知道如何获得这些参数吗?
答案 0 :(得分:1)
不能读取片段,因为它没有发送到服务器(并且VK可能这样做是为了提高auth进程的安全性)你的选择是use JavaScript:
<script>
if(window.location.hash) {
//Puts hash in variable, and removes the # character
var hash = window.location.hash.substring(1);
// hash found
alert (hash);
} else {
// No hash found
}
</script>
答案 1 :(得分:0)
遗憾的是,Fragment未传递给服务器。
当您尝试从Request.Uri.Fragment
获取时,它将始终为空。
没有简单的方法可以在服务器上获取片段。 您必须使用javascript来检索片段并将其发送到服务器,或者使用AJAX,或者您可以创建一个读取片段的中间页面,并将用户重定向到另一个页面,并将片段替换为查询字符串。
中间页面可能类似于:
if(window.location.hash) {
window.location= '/yoururl.htm' + window.location.hash.replace('#','?');
}