solucion redirect_uri_mismatch error configuración cliente java youtube-api google-oauth youtube-data-api google-oauth-java-client

java - configuración - error: redirect_uri_mismatch



Google OAUTH: el URI de redireccionamiento en la solicitud no coincide con un URI de redireccionamiento registrado (4)

Debes ingresar a la consola de desarrollo y configurar

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

como su URL de devolución de llamada.

Este video está desactualizado, ya que muestra la Consola de desarrollador anterior en lugar de la nueva, sin embargo, los conceptos deben aplicarse. Necesita encontrar su proyecto en la consola de desarrollador y registrar una URL de devolución de llamada .

Intento hacer una carga en YouTube desde mi aplicación web basada en Java, pasé unos días para entender qué es y dónde está el problema y no puedo obtenerlo, por ahora me estoy quitando el pelo de la cabeza.

Registré mi aplicación web en Google Console, así que obtuve un par de Client ID y Secret y la posibilidad de descargar el archivo tipo JSON con mi configuración.

Así que aquí está la configuración:

{ "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/"] } }

¿Cómo es posible que obtenga la URL predeterminada de Google?

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

Siempre me da la URL predeterminada http://localhost:8080/Callback lugar de la mía.

Y la consola IDE me muestra eso:

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...

Estoy usando la última versión de dependencias: google-api-services-youtube v3-rev99-1.17.0-rc y google-api-services-youtubeAnalytics v1-rev35-1.17.0-rc



Cuando su navegador redirecciona al usuario a la página de OAuth de Google, ¿está pasando como parámetro el URI de redireccionamiento al que desea que vuelva el servidor de Google con la respuesta del token? Establecer un URI de redirección en la consola no es una forma de decirle a Google a dónde ir cuando ingresa un intento de inicio de sesión, sino que es una forma de decirle a Google cuáles son los URI de redirección permitidos (si alguien más escribe una aplicación web con su cliente) ID pero un URI de redirección diferente no será permitido); su aplicación web debería, cuando alguien hace clic en el botón "iniciar sesión", enviar el navegador a:

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

(el URI de devolución de llamada pasado como un parámetro debe ser codificado por URL, por cierto).

Cuando el servidor de Google obtiene la autorización del usuario, redirigirá el navegador a lo que haya enviado como redirect_uri . Incluirá en esa solicitud el token como parámetro, por lo que su página de devolución de llamada puede entonces validar el token, obtener un token de acceso y pasar a las otras partes de su aplicación.

Si tú visitas:

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

Puede ver mejores muestras del cliente Java allí, demostrando que debe sobrescribir el método getRedirectUri para especificar su ruta de devolución de llamada para que no se use el valor predeterminado.

Los URI de redirección se encuentran en el archivo client_secrets.json por varias razones ... una muy grande es para que el flujo de oAuth pueda verificar que el redireccionamiento que especifique su aplicación coincida con lo que permite su aplicación.

Si visita https://developers.google.com/api-client-library/java/apis/youtube/v3 , puede generar una aplicación de muestra para usted que esté basada directamente en su aplicación en la consola, en la que (una vez más) el El método getRedirectUri se sobrescribe para usar sus devoluciones de llamada específicas.


Logré que el mío funcionara con las siguientes credenciales de cliente:

Orígenes de JavaScript autorizados

http://localhost

URI de redirección autorizada

http://localhost:8090/oauth2callback

Nota: utilicé el puerto 8090 en lugar de 8080, pero eso no importa, siempre y cuando el script de python use el mismo puerto que su archivo client_secret.json.

Referencia: Python Quickstart