2013-08-29 188 views
0

我嘗試在我的網站上使用谷歌加API來登錄第三方。獲取OAuth2訪問令牌時出錯,消息:'invalid_request

我使用類Google_Client方法createAuthUrl生成URI的用戶登錄, 頁面會重定向到我的網站頁面來完成授權, 但是當我使用方法Google_Client.authenticate檢查結果,我以下錯誤,

錯誤獲取的OAuth2訪問令牌,消息:「INVALID_REQUEST

所以,我怎麼能檢查從哪裏做的錯誤?可能在會話或某處

+0

Rfer https://developers.google.com/accounts/docs/OAuth2WebServer並一步步走 –

+0

你對回調中的驗證代碼做了什麼? – roninblade

+0

您也可以使用該代碼爲您的服務器獲取令牌。只需將代碼傳遞給您的服務器,然後服務器就可以交換代碼以獲取訪問令牌,以便您的客戶端和服務器都獲得授權。 https://developers.google.com/+/web/signin/server-side-flow – Joanna

回答

2

我自己也遇到了這個問題。事實證明,我在客戶建設方面並不一致。確保您的redirect uri不包含返回的包含驗證碼的查詢字符串!

例如,這將不起作用:

$client->setRedirectUri('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 

REQUEST_URI將是不同的,當從谷歌用戶的回報。

+0

+1指向我在正確的方向。在我的情況下,JavaScript客戶端使用Google API(gapi)使用grantOfflineAccess方法向服務器授予訪問令牌。根據https://developers.google.com/identity/sign-in/web/server-side-flow#step_6_send_the_authorization_code_to_the_server上的Google指南,grantOfflineAccess方法使用json參數調用({'redirect_uri':'postmessage'} )如果沒有爲Google應用定義重定向。在這種情況下,服務器必須調用$ client-> setRedirectURi('postmessage');在調用驗證方法之前。 – jkincali

相關問題