2013-04-16 1 views
1

J'essaie d'obtenir un jeton d'accès Google OAuth 2.0 pour un compte de service, mais je reçois un invalid_granterror à la place. J'ai vérifié mes différents artefacts (clé privée, etc.) et les horaires d'horloge, mais je n'ai pas réussi à résoudre ce problème jusqu'à présent.OAuth 2.0 pour les applications serveur à serveur: deux ou trois paramètres? (Ou: Certains ingénieurs de Google peuvent-ils ne pas compter jusqu'à trois? :)

Il y a un peut-élément connexe qui semble étrange: Google documentation dit

Trois paramètres sont nécessaires dans le HTTPs POST, et ceux-ci sont présentés ci-dessous

Il est suivi par une table avec deux lignes qui spécifie deux paramètres (grant_type et assertion). Se pourrait-il qu'un troisième est également nécessaire (j'ai vu des exemples qui utilisent également assertion_type d'une certaine façon)? Se pourrait-il que (certains) ingénieurs Google (ou peut-être le vôtre) ne peut pas compter jusqu'à trois? :)

En résumé: Quels sont les paramètres appropriés? Il semble peu clair de la documentation actuelle de Google.

MISE À JOUR: Voici quelques autres informations: Je ne peux pas utiliser la bibliothèque API Google API, car mon application requiert une autre langue que celles actuellement non prises en charge par Google. Par conséquent, je dois mettre en œuvre la logique de création et de signature de JWT, etc., comme cela est normalement déconseillé. J'ai confirmé que les artefacts de mon compte de service sont en ordre: je peux les utiliser avec la bibliothèque des API Google API pour Java pour accéder au même calendrier (à partir d'un autre calendrier que ma plateforme cible, c'est-à-dire). En particulier, mon "client_id" est de la forme "... @ developer.gserviceaccount.com" et ma clé est une clé privée RSA de 128 bits, tous deux obtenus à partir du Google APIs Dashboard.

Répondre

1

J'ai maintenant été en mesure de confirmer que c'est deux paramètres, pas trois. Le documentation de Google semble être correct dans la mesure où il nomme ces deux paramètres (grant_type et assertion) mais erroné dans la mesure où il se réfère à eux comme trois paramètres.

preuve de deux paramètres provient d'un Internet-Draft courant (JSON Jeton Web (JWT) Profils Jeton Bearer pour OAuth 2.0), qui définit un type de subvention d'extension sous RFC 6749 (Le Cadre d'autorisation OAuth 2.0). Evidence consiste également à avoir essayé un jeton d'accès verbatim obtenu par la bibliothèque cliente API Google (et révélé par la journalisation) dans mon implémentation (non-Java): l'utilisation de ce jeton d'accès a fait disparaître l'erreur invalid_grant.

(Il ya maintenant évidemment un problème à propos de la formation d'une signature SHA256withRSA laissée dans mon code, mais c'est un autre problème ...)

Questions connexes