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

j'essaie de faire un téléchargement sur YouTube à partir de mon application Web Java, j'ai passé quelques jours à comprendre quel est le problème et où il est et je ne peux pas l'obtenir, pour l'instant, je me tire les cheveux de la tête.

j'ai enregistré mon application Web dans Google Console, donc j'ai eu une paire D'ID de Client et Secret et une possibilité de télécharger le 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.

IDE Et la console m'indique 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

40
demandé sur Denees 2014-03-23 22:31:08

4 réponses

lorsque votre navigateur redirige L'utilisateur vers la page Web de Google, passez-vous comme paramètre L'URI de redirection vers lequel vous souhaitez que le serveur de Google revienne avec la réponse token? Définir un URI de redirection dans la console n'est pas une façon de dire à Google où aller lorsqu'une tentative de connexion arrive, mais 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, il sera rejeté); votre application web devrait, quand quelqu'un clique sur le bouton "connexion", d'envoyer au navigateur de:

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é comme paramètre doit être encodé url, btw).

lorsque le serveur de Google obtient l'autorisation de L'utilisateur, alors, il redirigera le navigateur vers ce que vous avez envoyé comme redirect_uri. Il inclura dans cette requête le token comme paramètre, de sorte que votre page de rappel pourra ensuite valider le token, obtenir un token 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 Outrepasser le getRedirectUri méthode pour spécifier votre chemin de rappel de sorte que la valeur par défaut n'est pas utilisée.

les URI de redirection sont dans le client_secrets.json fichier pour plusieurs raisons ... un grand est de sorte que le flux de oAuth peut vérifier que la redirection de votre application spécifie correspond à ce que votre application permet.

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

28
répondu jlmcdonald 2016-07-19 10:12:54

je pense que j'ai rencontré le même problème que vous. J'ai abordé ce problème avec les étapes suivantes:

1) Passez à Google Developers Console

2) mettre en JavaScript origines:

3) Définir L'URIs De Redirection:

32
répondu Max 2015-12-26 20:34:08

Vous devez aller dans la console développeur et set

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

comme votre URL de rappel.

Cette vidéo est un peu dépassé, car il montre l'ancienne Console de développement au lieu de la nouvelle, cependant, les concepts devraient encore s'appliquer. Vous avez besoin de trouver votre projet dans la console du développeur et enregistrer une URL de rappel.

3
répondu Ikai Lan 2014-03-25 15:25:11

j'ai pu faire fonctionner le mien en utilisant les justificatifs D'identité suivants:

Autorisé JavaScript origines

http://localhost

redirection autorisée URIs

http://localhost:8090/oauth2callback

Note: 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 client_secret.fichier json.

Référence: Python De Démarrage Rapide

2
répondu myidealab 2017-11-08 01:48:32