3
我已經使用Google日曆API構建了一個原型日曆同步系統,並且除了刷新訪問令牌之外,它運行良好。這些是我經歷的步驟:Google OAuth2錯誤 - 缺少必需的參數:刷新時的grant_type
1)授權我的API並收到授權碼。
2)交換了Access Token和RefreshToken的授權碼。
3)使用日曆API,直到訪問令牌過期。
此時我嘗試使用刷新令牌獲得另一個訪問令牌,所以我的用戶不必保持授予訪問權限,因爲日誌同步在離線時發生。
下面是PHP代碼,我在整個系統中使用了curl請求。
$requestURL = "https://accounts.google.com/o/oauth2/token";
$postData = array("grant_type" => "refresh_token",
"client_id" => $clientID,
"client_secret" => $clientSecret,
"refresh_token" => $refreshToken);
$headers[0] = 'Content-Type: application/json';
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $requestURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
$response = curl_exec($ch);
$responseArray = json_decode($response, TRUE);
我得到的迴應是:
[error] => invalid_request
[error_description] => Required parameter is missing: grant_type
沒有捲曲的錯誤報告。
我試過頭內容類型:應用程序/ x-www-form-urlencoded,和許多其他的東西,具有相同的結果。
我懷疑這是在我的curl設置或標題中顯而易見的,因爲在Google文檔中爲此請求提及的每個參數都已設置。不過,我正在圍繞着周圍的環境,希望得到任何幫助,包括指出我忽略的任何明顯錯誤。
感謝您的回答。試圖用相同的結果錯誤。 –
請仔細檢查:剛纔驗證此確切的代碼,並將其返回:數組 ( [的access_token] =><> [token_type] =>承載 [expires_in] => 3600 [id_token] =><> ) –
它不僅僅是內容類型的改變,它也是postData本身,它不能是json_encode'd –