web-dev-qa-db-fra.com

Comment ajouter plusieurs URI de redirection pour Google OAuth 2?

J'essaie de faire fonctionner l'authentification Google OAuth 2 avec une application jouet que j'utilise sur mon ordinateur (à localhost:8080) en utilisant Social Auth pour Java.

Cependant, lorsque mon application se connecte à Google pour authentifier l'utilisateur, Google répond avec cette page d'erreur:

enter image description here

Mon application, nommée "My Hobby App", est configurée dans la Developer Console comme telle:

enter image description here

Dans le Google OAuth 2 docs , il est précisé que:

redirect_uri: l'une des valeurs de redirect_uri répertoriées pour ce projet dans la Developers Console.

Détermine où la réponse est envoyée. La valeur de ce paramètre doit correspondre exactement à l'une des valeurs répertoriées pour ce projet dans la Google Developers Console (y compris le schéma http ou https, la casse et le signe '/').

J'ai quelques questions:

  • Comment puis-je ajouter plusieurs redirect_uris à mon application?
  • Pourquoi Google identifie-t-il mon application comme "compte de service par défaut du projet" plutôt que "mon application de loisirs"?
24

C'est en fait plus facile que vous ne le pensez, malheureusement, il m'a fallu quelques heures pour le comprendre.

Comment puis-je ajouter plusieurs redirect_uris à mon application?

Normalement, lorsque vous ajoutez plusieurs liens vers quelque chose sur Google ou ailleurs, vous le séparez par , ou ; mais avec les URI de redirection, vous devez utiliser une nouvelle ligne, ce n'est en fait pas très intuitif. Donc, lorsque vous appuyez sur Edit Settings, vous pouvez ajouter à l'URI et/ou aux origines si vous avez quelques liens supplémentaires, séparés par des retours à la ligne (enter).

Pas besoin de configurations d'application compliquées ou de nouvelles clés.

image

Pourquoi Google identifie-t-il mon application comme "compte de service par défaut du projet" plutôt que "mon application de loisirs"?

Sur votre deuxième question: vous devez vous rendre dans l'onglet "Écran de consentement" pour modifier les informations de votre application telles que votre PRODUCT NAME, HOMEPAGE, LOGO, etc.

34
CMPSoares

Cette réponse n'est peut-être pas une réponse exacte à la question, mais je pense que cela pourrait aider ceux qui utilisent Google OAuth pour la première fois et se demandent pourquoi leurs multiples URI ne sont pas reconnus.

Nous utilisons l'URI de redirection à 2 endroits dans le code. Première fois, lors de la récupération du code d'authentification et une deuxième fois, lors de l'échange de ce code contre un jeton d'accès.

Dans le Google docs , il est clairement mentionné que la réponse à la demande de code d'authentification (1ère demande) sera envoyée à l'URI de redirection. Donc, si vous faites la demande à partir d'un point de terminaison A et spécifiez l'URI rediredt en tant que point de terminaison B, Google enverra le code d'authentification au point de terminaison B. Ceci est clair et a bien fonctionné sans aucune erreur.

En ce qui concerne la deuxième demande, la documentation est quelque peu ambiguë. Le paramètre redirect_URI est décrit comme ci-dessous:

redirect_uri: l'URI que vous spécifiez dans la console API, comme décrit dans Définir un URI de redirection.

C'est là que j'ai fait une erreur en comprenant comment cela fonctionne. En suivant une approche similaire au premier appel, j'ai utilisé un troisième point de terminaison C et passé ce point de terminaison C dans le paramètre redirect_URI lors du deuxième appel. J'ai reçu une erreur de non-concordance d'URI bien que mes points de terminaison B et C soient spécifiés dans la console API.

Le problème est que, contrairement au premier appel, la réponse au deuxième appel arrive au même point de terminaison d'où la demande est faite. J'ai fait une demande en python comme ci-dessous:

r = requests.post(token_endpoint, params)

r a la réponse avec le jeton.

J'obtenais une non-concordance d'URI parce que je suis censé utiliser le même redirect_URI dans les deux appels.

Ainsi, pour une seule demande OAuth, nous devons utiliser une seule URL_rirection).

Mais alors, cela soulève la question de savoir pourquoi plusieurs redirect_URI sont autorisés dans la console API pour une seule application. Je suppose que si nous devons effectuer plusieurs paires d'appels authCode-token dans la même application, nous avons la latitude d'utiliser plusieurs redirect_URI.

4
Vikas