2014-09-12 1 views
1

J'ai essayé pour les deux derniers jours en essayant d'obtenir un jeton d'accès et de rafraîchissement jeton à l'aide de Google oauth2 mais ne va nulle part.Get Google jeton d'accès API client à l'aide CURL

La documentation est des ordures et je ne peux pas trouver des exemples qui fonctionnent.

Je viens de commencer à utiliser CURL en essayant d'obtenir le code d'accès et le jeton de rafraîchissement, mais je continue à avoir des erreurs avec la réponse.

J'ai essayé d'utiliser cette

// init the resource 
$url = 'https://accounts.google.com/o/oauth2/token'; 
$ch = curl_init($url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/x-www-form-urlencoded', 
    'Content-length: 0' 
)); 

curl_setopt($ch, CURLOPT_POSTFIELDS, 
    'code=' . urlencode('AUTHORISATION_CODE') . '&' . 
    'client_id=' . urlencode('MY_CLINET_ID.apps.googleusercontent.com') . '&' . 
    'client_secret=' . urlencode('MY_CLIENT_SECRET') . '&' . 
    'redirect_uri=http://www.example.com/' . '&' . 
    'grant_type=authorization_code' 
); 

// execute 
$output = curl_exec($ch); 

echo $output; 

// free 
curl_close($ch); 

mais je reçois juste cette réponse

{ 
    "error" : "invalid_request", 
    "error_description" : "Required parameter is missing: grant_type" 
} 

et je l'ai essayé de courir CURL de la ligne de commande

curl --data "code=AUTHORISATION_CODE&client_id=MY_CLIENT_ID.apps.googleusercontent.com&client_secret=MY_CLIENT_SECRET&redirect_uri=http://www.example.com/&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token 

mais je obtenir une réponse différente

{ 
    "error" : "invalid_client", 
    "error_description" : "The OAuth client was not found." 
} 

Pourquoi est-il si difficile juste pour obtenir un jeton d'accès?

MISE À JOUR

Je ne sais pas ce qui se passe, mais je ne reçois pas cette erreur plus et je reçois un jeton d'accès mais pas un jeton rafraîchissement

Je l'ai regardé ce poste Not receiving Google OAuth refresh token et je l'ai annulé l'accès de mon application pour régénérer l'actualisation jeton mais en utilisant ce code affiche une erreur au sujet d'un code invalide

+0

Juste une idée, mais omettent le dernier '/' 'du redirect_uri'. Ou échapper à cela en quelque sorte. – loveNoHate

+0

Cela ne fait aucune différence – AdRock

+0

Qu'avez-vous fait? – loveNoHate

Répondre

1

J'ai maintenant résolu le problème en utilisant Curl. Il ne semblait pas y avoir de raison pour que cela ne marche pas, mais cela a finalement fonctionné après la révocation de l'accès à l'application, l'authentification de l'application, l'obtention du code et l'utilisation du code dans la requête Curl.

Cette résolu une question précédente YouTube API v3 keeps asking for authorisation every time

Questions connexes