2013-06-03 44 views
0

我正在做一個OpenID /的oauth2登錄的#。我用這個登錄的東西非常接近結束遊戲,我聞到勝利即將到來。在我的谷歌的oauth2授權請求回調URL

我想我擠兩個問題合而爲一。

我做的授權請求是這樣的:

if (!isset($_REQUEST['code'])) 
    { 
     $login_path = "https://accounts.google.com/o/oauth2/auth?"; 
     $login_path .= "redirect_uri=" . $redirect_uri; 
     $login_path .= "&response_type=token"; 
     $login_path .= "&client_id=" . $client_id; 
     $login_path .= "&approval_prompt=force"; 
     $login_path .= "&scope=" . $scope; 
     $login_path .= "&access_type=online"; 
     $login_path .= "&state=".base64_encode(strtr("cid=fffffff1", '-_,', '+/=')); 

     echo "<a href='" . $login_path . "'>login</a>"; 
    } 

注意最後附屬物login_path串,在那裏我送一些base64encoded狀態參數。

當用戶授權Google授予我的應用程序權限以查看其身份後,它將用戶傳輸到我的回調網址,並且它似乎將url變量附加到回調網址。這些變量包括我的狀態參數,我很高興。

什麼我不開心的是與一個界定查詢字符串的開頭是,而是使用#標籤,「#」,因此字符串看起來像這樣「?」:

http://www.talqo.com/oauth2callback.php#state=Y2lkPWZmZmZmZmYx&access_token=ya29.AHES6ZQ4LB22t7z0Wc8-5uACj_suJ8WnQJxKq9ICdvYT&token_type=Bearer&expires_in=3600 

(我改變了一些字符在上面的access_token,萬一有某種安全問題的?)

所以,你看緊隨oauth2callback.php是一個「#」。我無法分析GET變量。

而在問題2) weaseling如果你能回答這個問題,我有一個後續問題,這是我沒有收到我的最終授權請求的ID,而是越來越

{ "error" : "invalid_request" } 

但是,我正在獲取其他access_token,id_token,token_type和expires_in。

回答

0

哎呀!在初始登錄頁面,我改變了:

$login_path .= "&response_type=token"; 

到:

$login_path .= "&response_type=code"; 

...現在我的回調地址正確讀取:

http://www.talqo.com/oauth2callback.php?state=Y2lkPWZmZmZmZmYx&code=4/QX4ZWs1ZDvManJ1x74pIGCOB0BQL.guKNfSajhLQfshQV0ieZDAow_X8UfgI 

儘管如此,我繼續得到

{ "error" : "invalid_request" } 

而不是所希望的「 ID」。