OAuth 2.0 in php mit curl
Ich brauche, um meine access_token und refresh_token für OAuth 2.0 für den Zugriff auf Google APIs, das php-script unten sollte wieder eine json mit access_token, refresh_token wie diese:
{
"access_token" : "####",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "####"
}
aber, das php-Skript zurückgeben, mir nur diese Fehlermeldung:
{
"error" : "invalid_request",
"error_description" : "Client must specify either client_id or client_assertion, not both"
}
Ich versucht zu entfernen, client_secret/client_id und verwenden Sie nur client_id/client_secret, aber immer noch die 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 LOCKE in cmd funktioniert und gibt mir access-und refresh-token ohne Fehler.
curl --data "code=###&client_id=###.apps.googleusercontent.com&client_secret=###&redirect_uri=http://localhost/phpConnectToDB/csv/refreshFusionTable.php&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
Ich verstehe nicht, warum bekomme ich das fehlende Schema-Fehler, obwohl die .php-Skript existiert und es befindet sich auf dem angegebenen Pfad. Könnten Sie mir bitte helfen ?
BEARBEITEN
Problem mit "Ungültiger parameter-Wert für redirect_uri: die Fehlende Regelung" gelöst, die ich gerade ersetzt, 'redirect_uri' => urlencode($redirect_uri), mit diesem 'redirect_uri' => $redirect_uri, CURLOPT_POSTFIELDS.
InformationsquelleAutor FilipR | 2014-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wow, dumm misstake, ich sollte ein rest.
Den Variablen-Namen nicht übereinstimmen.
Ich definiert:
Aber hier habe ich eine nicht-vorhandene clientID, clientSecret
Behoben und PHP-Skript
Aber ich muss sagen, dass google etwas irreführende Fehlermeldung hier, denn ich habe nicht definiert, weder client_id noch client_secret und die Fehlermeldung war:
InformationsquelleAutor FilipR