OAuth 2.0 in PHP mit Curl

Ich benötige mein access_token und refresh_token für OAuth 2.0, um auf Google-APIs zugreifen zu können. Das folgende PHP-Skript sollte einen Json mit access_token und refresh_token wie folgt zurückgeben:

{
  "access_token" : "####",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "####"
}

aber das php script gibt mir nur diese fehlermeldung zurück:

{
"error" : "invalid_request",
"error_description" : "Client must specify either client_id or client_assertion, not both"
}

Ich habe versucht, client_secret / client_id zu entfernen und nur client_id / client_secret zu verwenden, erhalte aber immer noch den gleichen Fehler.

PHP-Skript
$client_id = '###.apps.googleusercontent.com';
$redirect_uri = 'http://localhost/phpConnectToDB/csv/refreshFusionTable.php';
$client_secret = '###';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://accounts.google.com/o/oauth2/token");

$code = $_REQUEST['code'];

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);


curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'code' => $code,
'client_id' => $clientID,
'client_secret' => $clientSecret,
'redirect_uri' => $redirect_uri,
'grant_type' => 'authorization_code'
));

$data = curl_exec($ch);

var_dump($data);

Obwohl curl in cmd funktioniert und mir fehlerfrei Zugriff und Refresh-Token zurückgibt.

curl --data "code=###&client_id=###.apps.googleusercontent.com&client_secret=###&redirect_uri=http://localhost/phpConnectToDB/csv/refreshFusionTable.php&am,p;grant_type=authorization_code" https://accounts.google.com/o/oauth2/token

Ich verstehe nicht, warum ich den fehlenden Schema-Fehler erhalte, obwohl das .php-Skript existiert und sich auf dem angegebenen Pfad befindet. Kannst du mir bitte helfen ?

BEARBEITENProblem mit "Ungültiger Parameterwert für redirect_uri: Fehlendes Schema" behoben. Ich habe 'redirect_uri' => urlencode ($ redirect_uri) durch dieses 'redirect_uri' => $ redirect_uri in CURLOPT_POSTFIELDS ersetzt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage