web-dev-qa-db-fra.com

OAuth v2 (API Google) jeton d'accès d'expiration

Je construis un composant d'intégration à l'aide d'un cadre graphique doté d'un connecteur OAuth2 pré-construit. Ce cadre nécessitait les champs suivants pour OAuth v2:

  • Type de subvention
  • Portée
  • URL du serveur d'authentification
  • Identité du client
  • Secret client
  • Jeton d'accès
  • Actualiser le jeton

Je dois obtenir des données de l'API Google Analytics, je suis donc allé sur Google Dev Console ( https://console.developers.google.com/project/927890000889/apiui/credential ). J'ai généré un "ID client pour l'application Web". À partir du paramètre de cet objet, j'ai pu remplir certains des paramètres ci-dessus

  • Type de subvention: 'authorisation_code'
  • ID client: "RANDOMCHARSam5o37nsiu730d.apps.googleusercontent.com"
  • Secret client: "RANDOMCHARSiSwBA5OH5qYLUa"

Puis en utilisant Google Oauth Playground ( https://developers.google.com/oauthplayground ) j'ai pu combler les bits manquants

Tout fonctionne bien, je suis autorisé à accéder et j'obtiens des données de Google Analytics, mais juste pendant un certain temps, après quelques minutes si je réessaye, je reçois une erreur d'échec d'autorisation. Je crois que le problème est lié à l'expiration du jeton d'accès, mais je ne sais pas comment résoudre ce problème. Il convient de mentionner que cette activité est un lot (pas d'interaction humaine), donc personne ne peut demander un nouveau jeton d'accès. Le cadre d'intégration n'est pas extensible (je ne peux pas écrire de code pour le renouveler), donc je pense qu'il existe un moyen d'obtenir un jeton d'accès qui n'expire jamais ou un autre mécanisme pour obtenir le même résultat.

En fin de compte, je ne suis pas sûr d'avoir approché l'exigence correctement depuis le début (ID client pour l'application Web).

Toute aide est très appréciée, Giovanni

10
Giovanni Vigorelli

Les jetons d'accès expirent généralement après 60 minutes. Si vous avez un jeton d'actualisation, vous pouvez utiliser le jeton d'actualisation pour obtenir un nouveau jeton d'accès (valide).

Ce document explique comment procéder:
https://developers.google.com/accounts/docs/OAuth2WebServer#refresh

Pour répondre à votre question globale, oui, vous vous approchez de tout correctement. Tout ce que vous devez faire est de gérer le cas où le jeton d'accès a expiré en le rafraîchissant. De plus, lorsque vous avez initialement demandé le jeton d'accès, la réponse doit vous indiquer la durée de validité, vous ne devez donc actualiser ce jeton que s'il a expiré.

22
Philip Walton

Vous pouvez utiliser des jetons Actualiser pour le rendre plus longtemps utilisé. Le serveur Google Auth a émis des jetons d'actualisation qui n'expirent jamais. Un jeton peut cesser de fonctionner pour l'une des raisons suivantes: l'utilisateur a révoqué l'accès. Le jeton n'a pas été utilisé depuis six mois. L'utilisateur a changé de mot de passe et le jeton contient des étendues Gmail. Le compte d'utilisateur a dépassé un certain nombre de demandes de jeton. Il existe actuellement une limite de 50 jetons d'actualisation par compte d'utilisateur et par client.Si la limite est atteinte, la création d'un nouveau jeton invalide automatiquement le plus ancien jeton sans avertissement. Cette limite ne s'applique pas aux comptes de service.

de: https://developers.google.com/identity/protocols/OAuth2

2
Haryono