2013-06-12 32 views
0

我正在製作一個PHP應用程序,它將使用一個Google Drive帳戶。帶有刷新令牌的OAuth流程。錯誤500

因此,作爲管理員,我首先授予Google Drive帳戶的權限。 當權限被接受時,我將刷新標記保存在數據庫中。

之後,在一個不同的URL,將被客戶端使用,我試圖驗證。

接下來,我拉刷新令牌從數據庫中,然後進行POST請求:

$url = "https://accounts.google.com/o/oauth2/token"; 

與參數:

$post_data = array(
    'client_id' => CLIENT_ID, 
    'client_secret' => CLIENT_SECRET, 
    'refresh_token' => $refreshToken, 
    'grant_type' => 'refresh_token'); 

一個獲得成功的響應後,我保存的access_token但是當我嘗試交換憑據時,我收到此錯誤消息:

An error occurred: Error fetching OAuth2 access token, message: '  
Error processing OAuth 2 request 

Error 500 
' 
Fatal error: Uncaught exception 'CodeExchangeException' in ... 

我是m在這裏發佈一些東西? 我使用的oauth流是否正確?

在此先感謝!

回答

1

當您從刷新令牌獲取訪問令牌時,該訪問令牌本身就是一個憑證,並且之後沒有交換過程。在憑證中,有:1.訪問令牌2.刷新令牌。並且您獲得授權代碼的交換憑證,而不是訪問令牌。所以在你的代碼中,在訪問令牌交換訪問令牌的過程中發生錯誤。

+0

thnx您的回覆。所以,使用刷新令牌,我得到一個包含access_token和id_token的json obj。我應該如何處理這個json obj?通過它來建立服務? – Paschalis

+0

我不知道該如何處理該json對象。但是,在某處應該有一些關於刷新令牌的抽象。我對google-api-php-client不太確定,但在google-api-python-client中,如果Credentials.authorize過期,它會自動嘗試刷新令牌,以至於從開發者級別開始,它們甚至不會不得不打擾任何關於清爽的事情。應該有一些關於清爽的抽象,並且你不必親自處理它。我建議您不要單獨處理刷新,而應仔細閱讀文檔。 –