2014-01-09 134 views
5

我試圖使用最新版本的google-api-php-client獲取訪問令牌(看看https://github.com/google/google-api-php-client),而我「M下面這個官方文檔: https://developers.google.com/api-client-library/php/guide/aaa_oauth2_webGoogle_Auth_Exception:獲取OAuth2訪問令牌時出錯,message:'invalid_request'

唯一的區別是,我想使用該服務Google_Service_Plus,而不是Google_Service_Urlshortener

基本上我做這些步驟:

  • 我初始化在谷歌客戶$client指定的客戶端ID,客戶端密鑰,開發重點,範圍和重定向URI(指向我的本地的Ubuntu 12.04 - PHP 5.3。 10)。
  • 我使用Google客戶端$client初始化Google Plus服務$plus
  • 我使用$client->createAuthUrl()將用戶重定向到驗證URL。
  • 用戶可以看到同意頁面並接受。
  • 我獲得授權代碼$_GET['code']用於令牌交換。
  • 然後,在回調頁面中,我嘗試做$client->authenticate($_GET['code']);,但Google服務器返回HTTP 400,我得到一個Google_Auth_Exception: Error fetching OAuth2 access token, message: 'invalid_request'

流程在這裏打破。
有什麼問題?

任何幫助將不勝感激。

在此先感謝,
Niccolò。

回答

8

我創建了一個oauth2callback.php文件並且遇到了這個問題。當我正確設置Google_Client時,問題就消失了。起初,我只是設置clientId和祕密。一旦我設置了redirectUri,我的代碼就開始工作了。我不認爲我需要設置redirectUri,因爲我知道重定向已經發生(我在重定向頁面上)。我想這個答案可能會幫助其他人經歷類似的問題。

+3

這正是我的問題。由於我使用'server-side-flow',因此redirectUri必須設置爲「'postmessage'」。然後,瞧! –

+1

'postmessage'是什麼意思? @CJThompson – briankip

3

一旦我爲$ client設置了JSON配置文件,它對我來說很有用。

例如:$client->setAuthConfigFile(__dir__.'/../conf/client_secrets.json');

相關問題