我想獲取有關Google帳戶的數據。我用下面的代碼:Google OAuth2通過cURL返回「unsupported_grant_type」(PHP)
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://www.googleapis.com/oauth2/v4/token',
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Cache-Control: no-cache',
'Content-Type: application/x-www-form-urlencoded',
],
CURLOPT_POSTFIELDS => [
'code' => $code,
'client_id' => '{MY_CLIENT_ID}',
'client_secret' => '{MY_CLIENT_SECRET}',
'redirect_uri' => '{SOME_URL}'
'grant_type' => 'authorization_code',
]
));
$result = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
在結果我得到一個錯誤:
{
"error": "unsupported_grant_type",
"error_description": "Invalid grant_type: "
}
我使用說明此:
https://developers.google.com/identity/protocols/OpenIDConnect
可變$code
和另一個數據是有效的!因爲我試圖通過「PostMan」發送請求,並且我得到了正確的結果。
請告訴我,我哪裏有錯?
感謝您的回答!我嘗試了你的方式,我得到了同樣的錯誤...但是!當我嘗試不同的「redirect_uri」時,我解決了我的麻煩。我不明白,爲什麼不能在參數中使用每個URI?它們都添加到我的Google App的列表中,但只有一個(不是第一個!)來自6個URI是有效的!我錯過了Google App的設置? – vitaliy
我找到解決方案。順便說一句,需要設置「redirect_uri」與獲取「代碼」的第一個請求中設置的URL相同。就這樣。 P.S .:也許我錯過了來自文檔的註釋...... :( – vitaliy