2012-11-30 33 views
0

我正在嘗試使用Microsoft Live Connect做一個非常簡單的標記,但我在解析返回的標記時遇到了問題。我把這個網址:解析URL中的'#'後的URL值

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

它帶我到微軟的服務器,在登錄我,確認權限,然後正確地加載回調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

發表一個print_r($ _ SERVER) – keyboardSmasher

+0

我看着它,參數沒有在那裏。不過,有些東西是我的意思,可能是因爲他們爲了安全起見而阻止服務器獲得密鑰(我不明白爲什麼)..我想我可以用JavaScript解析URL並將它發送給第二個PHP解析腳本。 – Dendory

+0

你嘗試過parse_url函數嗎? –

回答

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;  
    } 
    } 

然後查詢字符串值可以在重定向時解析。