我正在尝试使用Microsoft Live Connect进行一个非常简单的登录,但是我在解析返回的令牌时遇到了问题。我称这个网址为:
https://login.live.com/oauth20_authorize.srf?client_id=MY_CLIENT_ID&scope=wl.skydrive_update&response_type=token&redirect_uri=http%3A%2F%2FMY_SITE.com%2Fcallback.php
它将我带到Microsoft服务器,登录,确认权限,然后正确加载回调URL,如下所示:
http://MY_SITE.com/callback.php#access_token=LOTS_OF_STUFF&authentication_token=MORE_STUFF&token_type=bearer&expires_in=3600&scope=wl.skydrive_update
现在的问题是如何获得这些令牌?我该怎么解析那个?他们使用'#'代替'?'..所以$ _GET为空,$ _POST为空,$ _SERVER ['REQUEST_URI']没有显示任何内容。
答案 0 :(得分:2)
通常,浏览器不会将哈希符号后的值发送到服务器。您可以在客户端使用JavaScript处理它们。 请参阅:Why the hash part of the URL is not in the server side?
答案 1 :(得分:0)
不幸的是,他们返回的哈希字符意味着在客户端处理。如果您确实需要使用服务器端脚本(PHP)解析值,则可以使用JavaScript再次重定向。您可以尝试添加以下JavaScript代码:
window.onload = function() {
// redirect if hash is detected
if(window.location.hash)
{
var redirect_hash = window.location.hash.replace('#', '?');
var redirect_location = 'http://' + document.domain + redirect_uri;
window.location = redirect_location;
}
}
然后可以在重定向时解析查询字符串值。