81 votes

Obtenir un jeton d'actualisation google api

Je ne parviens pas à obtenir mon jeton d'actualisation avec mon code. Je ne peux obtenir que mon jeton d'accès, type de jeton, etc., j'ai suivi des tutoriels comme mettre access_type = offline sur mon URL de connexion.

 echo "<a href='https://accounts.google.com/o/oauth2/auth?" 
    . "access_type=offline&client_id=123345555.apps.googleusercontent.com& "
    . "scope=https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/plus.me&response_type=code& "
    . "redirect_uri=http://www.sample.com/sample.php&state=/profile'>Google</a>";
 

et mes champs pour obtenir le jeton d'accès

 $fields=array(
    'code'=>  urlencode($authcode),
    'client_id'=> urlencode($clientid),
    'client_secret'=> urlencode($clientsecret),
    'redirect_uri'=> urlencode($redirecturi),
    'grant_type'=> 'authorization_code',
);
 

mais je ne peux pas obtenir refresh_token, seulement les types access_token, token_type, id_token et expires_in.

112voto

user987361 Points 489

Essayez d'ajouter ceci à vos paramètres d'URL

approbation_prompt = force

63voto

bossylobster Points 5958

Si je peut développer les user987361's réponse:

De l' accès hors connexion partie de la OAuth2.0 docs:

Lorsque votre application reçoit un jeton d'actualisation, il est important pour stocker un jeton d'actualisation pour une utilisation future. Si votre application perd le jeton d'actualisation, il faut re-demander à l' utilisateur de consentement avant d'obtenir un autre jeton d'actualisation. Si vous avez besoin d' pour re-demander à l'utilisateur de consentement, comprennent l' approval_prompt paramètre dans le code d'autorisation à demander, et de définir la valeur de force.

Alors, quand vous avez déjà accordé l'accès, à la suite de demandes pour un grant_type de authorization_code ne sera pas de retour l' refresh_token, même si access_type a été fixé pour offline dans la chaîne de requête de la page de consentement.

Comme indiqué dans la citation ci-dessus, afin d'obtenir un nouveau refresh_token après déjà d'en recevoir un, vous devez envoyer votre utilisateur en arrière à travers l'invite de commandes, qui vous pouvez le faire en définissant approval_prompt de force.

Cheers,

PS, Ce changement a été annoncé dans un billet de blog ainsi.

12voto

Elliot Coad Points 315

C'est access_type=offline que vous voulez.

Cela renverra le jeton d'actualisation la première fois que l'utilisateur autorisera l'application. Les appels suivants ne vous obligent pas à réapprouver l'application ( approval_prompt=force ).

Voir plus de détails: https://developers.google.com/accounts/docs/OAuth2WebServer#offline.

8voto

user2281246 Points 47

Salut j'ai suivi les étapes suivantes, et j'avais réussi à obtenir le jeton d'actualisation.

L'autorisation de débit se fait en deux étapes.

  1. Est d'obtenir le code d'autorisation à l'aide de https://accounts.google.com/o/oauth2/auth? d'URL.

    Pour qu'une demande est envoyée à fournir des paramètres suivants. 'scope=' + SCOPE + '&client_id=' + CLIENTID + '&redirect_uri=' + REDIRECT + '&response_type=' + TYPE + '&access_type=offline' Fournissant au-dessus recevront un code d'autorisation.

  2. La récupération de AcessToken et RefreshToken l'aide d' https://accounts.google.com/o/oauth2/token?d'URL. Pour qu'une demande est envoyée à fournir des paramètres suivants.

    "code" : le code, "client_id" : CID, "client_secret" : CSECRET, "redirect_uri" : REDIRECTION, "grant_type" : "authorization_code",

Donc, dans votre première tentative, une fois que vous autorisez les autorisations que vous serez en mesure d'obtenir le jeton d'Actualisation. Les tentatives ultérieures ne fournira pas le jeton d'actualisation. Si vous voulez une nouvelle fois le jeton de la révoquer l'accès à l'application.

Espérons que cela aidera quelqu'un cheers :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X