POST à l'aide de CURL en PHP donne de demande non valide Erreur
Je suis ci-dessous à l'aide de la méthode post pour compte google à l'aide de curl, mais il me donne invalid_request erreur.
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf&
client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com&
client_secret=CENSORED&
redirect_uri=http://localhost/oauth2callback&
grant_type=authorization_code
Voici mon code PHP avec curl
$text ='test';
$URL = "https://accounts.google.com/o/oauth2/token";
$header = array(
"POST /o/oauth2/token HTTP/1.1",
"Host: accounts.google.com",
"Content-type: application/atom+xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"code=[my_code]&client_id=[my_client_id]&client_secret=[my_client_secret]& redirect_uri=http://localhost/curl_resp.php&grant_type=authorization_code",
"Content-length: ".strlen($text),
);
$xml_do = curl_init();
curl_setopt($xml_do, CURLOPT_URL, $URL);
curl_setopt($xml_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($xml_do, CURLOPT_TIMEOUT, 10);
curl_setopt($xml_do, CURLOPT_RETURNTRANSFER, true);
curl_setopt($xml_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($xml_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($xml_do, CURLOPT_POST, false);
curl_setopt($xml_do, CURLOPT_POSTFIELDS, $text);
curl_setopt($xml_do, CURLOPT_HTTPHEADER, $header);
Et je vais avoir demande non valide erreur
Pourriez-vous ajouter votre code PHP?
Sont ces nouvelles lignes à la suite de la
Que le code PHP ne semble pas complète, pour ne pas dire qu'il n'est guère lisible. Modifier votre question et ajouter votre PHP il y a comme un bloc de code.
J'ai ajouté le
Sont ces nouvelles lignes à la suite de la
&
caractères dans le corps POST il y a dans les données que vous envoyez sur le serveur? Parce qu'ils ne devraient pas être...Que le code PHP ne semble pas complète, pour ne pas dire qu'il n'est guère lisible. Modifier votre question et ajouter votre PHP il y a comme un bloc de code.
J'ai ajouté le
oauth
et google-authentication
balises. Il me semble que ce problème n'est pas spécifiquement avec PHP, la méthode POST, ou cURL. Il me semble que la demande est d'atteindre leurs serveur sans problème, mais est d'être rejetés par leur serveur pour une raison quelconque. J'ai trouvé un poste similaire qui pourrait vous aider: groups.google.com/group/HealthGraph/browse_thread/thread/...OriginalL'auteur vishal shah | 2012-06-07
Vous devez vous connecter pour publier un commentaire.
Je ne sais rien à propos de l'utilisation de Google API oAuth, mais dans les exemples que j'ai regardé jusqu'à présent, il semble que vous êtes censé passer les valeurs (c'est à dire
code
,client_id
, etc.) dans le post champs, et non pas directement dans l'en-tête HTTP.L'exemple suivant ne fonctionne toujours pas complètement, mais au lieu d'obtenir un
invalid_request
erreur, il vous donneinvalid_grant
. Je pense qu'il ya quelque chose de mal en plus de ce que j'ai mentionné (peut-être vous avez besoin de nouvelles informations d'identification à partir de Google ou quelque chose), mais cela pourrait vous obtenir un pas de plus, au moins:Merci @Antonio... la partie n'était pas clair du tout pour moi.
Cette réponse est très utile mais j'ai une question comment révoquer Auth code ou en obtenir un nouveau?
Vérifier manuel ou de poser une nouvelle question, si c'est toujours pas clair.
OriginalL'auteur Travesty3
La réponse à votre demande comprend en fait une très lisible description du problème:
j'ai utilisé le contenu de longueur en-tête mais ne fonctionne pas
J'ai utilisé l'api Google php bibliothèque cliente pour obtenir un jeton d'accès et il a travaillé pour moi.
OriginalL'auteur lanzz
Pourquoi avez-vous CURLOPT_POST ensemble de faux?
Bien que certaines configurations de cURL changer automatiquement de ce tru si CURLOPT_POSTFIELDS est réglé, vous n'avez pas valide postfield.
Il devrait être en param=valeur de syntaxe ou d'un tableau passé en.
OriginalL'auteur Mike Mackintosh
Je l'ai utilisé après tableau dans la méthode CURL et Google valide le code et il a travaillé pour moi
OriginalL'auteur vishal shah
J'ai également le même problème, où google renvoie un "invalid_xxx".
Après beaucoup de recherches et de dépannage, le problème vient de l'encodage de la forme elle-même! Ne pas utiliser la fonction "http_builder_query", comme il l'messses la chaîne et google n'est pas de la "reconnaissance". Exemple :
http_builder_query de Sortie : "code=4%252FYYUT71KJ6..."
par rapport à
juste un type normal chaîne : "code=4/YYUT71KJ6..."
Voici mon code de travail, où j'ai placé " x " dans les emplacements les besoins de vos propres données (prises et modifié à partir de google l'authentification oauth)
Le résultat sera comme :
Une fois que vous avez la "access_token', l'accès aux données de profil avec cette url :
https://www.googleapis.com/oauth2/v1/userinfo?access_token=YOUR_ACCESS_TOKEN_HERE
~ fin ~
OriginalL'auteur Britc