web-dev-qa-db-fra.com

Google OAUTH: l'URI de redirection figurant dans la demande ne correspond pas à l'URI de redirection enregistré

J'essaie de télécharger sur YouTube à partir de mon application Web basée sur Java). J'ai passé quelques jours à comprendre quel est le problème et où se trouve le problème. Je ne parviens pas à l'obtenir. les cheveux de ma tête.

J'ai enregistré mon application Web dans Google Console. J'ai donc obtenu deux identifiants client et secret et la possibilité de télécharger un fichier de type JSON avec ma configuration.

Alors voici la config:

{
    "web":{
        "auth_uri":"https://accounts.google.com/o/oauth2/auth",
        "client_secret":"***",
        "token_uri":"https://accounts.google.com/o/oauth2/token",
        "client_email":"***",
        "redirect_uris":["http://localhost:8080/WEBAPP/youtube-callback.html","http://www.WEBAPP.md/youtube-callback.html"],
        "client_x509_cert_url":"***",
        "client_id":"***",
        "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
        "javascript_origins":["http://www.WEBAPP.md/"]
    }
}

Comment est-il possible que j'obtienne l'URL par défaut de Google?

The redirect URI in the request: http://localhost:8080/Callback did not match a registered redirect URI

Il me donne toujours la valeur par défaut http://localhost:8080/Callback URL au lieu de la mienne.

Et IDE la console me montre que:

Please open the following address in your browser: https://accounts.google.com/o/oauth2/auth?client_id=***&redirect_uri=http://localhost:8080/Callback&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload Attempting to open that address in the default browser now...

J'utilise la dernière version des dépendances: google-api-services-youtube v3-rev99-1.17.0-rc et google-api-services-youtubeAnalytics v1-rev35-1.17. 0-rc

46
Denees

Lorsque votre navigateur redirige l'utilisateur vers la page oAuth de Google), transmettez-vous en tant que paramètre l'URI de redirection que vous souhaitez que le serveur de Google renvoie avec la réponse au jeton? Définir un URI de redirection dans la console n'est pas Une façon de dire à Google où aller quand une tentative de connexion arrive, mais c'est plutôt une façon de dire à Google ce que sont les URI de redirection autorisés (donc si quelqu'un d'autre écrit une application Web avec votre ID client mais un URI de redirection différent, ce sera votre application Web doit, lorsque quelqu'un clique sur le bouton "Connexion", envoyer le navigateur à:

https://accounts.google.com/o/oauth2/auth?client_id=XXXXX&redirect_uri=http://localhost:8080/WEBAPP/youtube-callback.html&response_type=code&scope=https://www.googleapis.com/auth/youtube.upload

(L'URI de rappel passé en tant que paramètre doit être codé en url, au passage).

Lorsque le serveur de Google obtient l'autorisation de l'utilisateur, il redirige le navigateur vers tout ce que vous avez envoyé en tant que redirect_uri. Il inclura dans cette demande le jeton en tant que paramètre afin que votre page de rappel puisse ensuite valider le jeton, obtenir un jeton d'accès et passer aux autres parties de votre application.

Si vous visitez:

http://code.google.com/p/google-api-Java-client/wiki/OAuth2#Authorization_Code_Flow

Vous pouvez y voir de meilleurs exemples du client Java], démontrant que vous devez remplacer la méthode getRedirectUri pour spécifier votre chemin de rappel afin que la valeur par défaut ne soit pas utilisée.

Les URI de redirection sont dans le client_secrets.json fichier pour plusieurs raisons ... une grosse est que le flux oAuth puisse vérifier que la redirection spécifiée par votre application correspond à celle autorisée par votre application.

Si vous visitez https://developers.google.com/api-client-library/Java/apis/youtube/v Vous pouvez générer un exemple d'application pour vous-même, directement basé sur votre application dans la console. , dans lequel (encore) la méthode getRedirectUri est écrasée pour utiliser vos rappels spécifiques.

30
jlmcdonald

Je pense avoir rencontré le même problème que vous. J'ai abordé ce problème en procédant comme suit:

1) Allez à console des développeurs Google

2) Définir les origines JavaScript:

3) Définir les URI de redirection:

39
Max

Vous devez accéder à la console du développeur et définir

http://localhost:8080/WEBAPP/youtube-callback.html

comme URL de rappel.

Cette vidéo est légèrement obsolète, car elle montre l'ancienne console pour développeur au lieu de la nouvelle, mais les concepts doivent toujours s'appliquer. Vous devez trouver votre projet dans la console du développeur et enregistrer une URL de rappel .

4
Ikai Lan

J'ai réussi à faire fonctionner le mien en utilisant les informations d'identification du client suivantes:

Origines JavaScript autorisées

http://localhost

URI de redirection autorisées

http://localhost:8090/oauth2callback

Remarque: J'ai utilisé le port 8090 au lieu de 8080, mais cela n'a pas d'importance tant que votre script python utilise le même port que votre fichier client_secret.json.

Référence: Python Quickstart

3
myidealab