google oauth - signinwithpopup - ¿Cómo autenticar al usuario con solo una cuenta de Google en Actions on Google?
integrar login google en mi web (4)
Debe implementar el protocolo Oauth con cualquier aplicación de Google Assistant que esté desarrollando. Déjame ser un poco más claro:
- El usuario está en el asistente, debe vincularlo a cualquier dato que tenga en el lado de la aplicación
- El acceso a los datos que tiene sobre su usuario está protegido por un token de acceso
- Google luego debe solicitarle este token para tener acceso a este recurso
- Cuando google tiene el token, puede enviarlo a la aplicación para que valide todas las solicitudes para obtener el recurso.
Es por eso que necesita implementar su propio servidor oauth (Honestamente, solo son dos puntos finales más en su aplicación): la identidad se verifica en el lado de Google, pero solo usted puede conocer el enlace entre el usuario y el recurso para acceder. El proceso anterior es válido, solo necesita especificar su propio punto final de token y su propio punto final de autenticación. Tenga en cuenta que si solo desea verificar que el usuario haya iniciado sesión en Google y recibir su correo electrónico, solo necesita implementar el flujo de identidad simplificado que no requiere el punto final / auth ( Registre automáticamente usuarios con flujos de identidad optimizados )
Dicho esto, dije que implementé el flujo pero obtengo el mismo error:
expected_inputs[0].possible_intents[0]: Transactions/Identity API must be enabled before using.
Actualmente, Google Assitant incluye una manera fácil de solicitar información no identificable sobre el usuario y un flujo detallado para autenticar al usuario en un servicio de terceros a través de OAuth2. ¿Qué pasa si todo lo que necesito es que el usuario se autentique en Google? Intenté completar el flujo de vinculación de la cuenta utilizando la información de Google OAuth2, pero parece que no funciona. Si se supone que esa última cosa funciona con fluidez, eso sería suficiente respuesta.
Contexto: los usuarios ya se autentican solo con Google en una página web relacionada. Todo lo que necesito es vincular esta cuenta ya autenticada con la cuenta menos autenticada en el Asistente de Google.
Después de contactar a Google, la situación actual parece ser que debe configurar su propio servidor OAuth2, y luego, en la pantalla de inicio de sesión de su servidor OAuth2, debe iniciar el flujo de Google OAuth2.
debe tener su propio punto final con Google Oauth2; es correcto que no pueda usar Google Oauth como proveedor. Para utilizar el servicio Google OAuth, puede utilizar un botón "iniciar sesión con Google" en su propio punto final.
Fuente: Contacto con Google Actions en el soporte de Google
Un poco sin palabras en este momento ... ya que esto parece ser un gran descuido por parte de Google.
Puedo hacerlo funcionar después de mucho tiempo. Primero tenemos que habilitar el webhook y podemos ver cómo habilitarlo en los documentos de cumplimiento del flujo de diálogo. Si vamos a usar el Asistente de Google, primero tenemos que habilitar la Integración del Asistente de Google en las integraciones. Luego, siga los pasos mencionados a continuación para la vinculación de cuentas en acciones en Google: -
-
Vaya a la consola de la nube de Google -> API y servicios -> Credenciales -> ID de cliente OAuth 2.0 -> Cliente web -> Anote la identificación del cliente, el secreto del cliente desde allí -> Descargue JSON - de json anote la identificación del proyecto, auth_uri, token_uri - > URI de redireccionamiento autorizado -> Lista blanca de la URL de nuestra aplicación -> en esta parte fija de URL es https://oauth-redirect.googleusercontent.com/r/ y agregue la identificación del proyecto en la URL -> Guarde los cambios
-
Acciones en Google -> Configuración de vinculación de cuenta 1. Tipo de concesión = Código de autorización 2. Información del cliente 1. Complete la identificación del cliente, el secrtet del cliente, auth_uri, token_uri 2. Ingrese la uri de autenticación como https://www.googleapis.com/auth y token_uri como https://www.googleapis.com/token 3. Guarde y ejecute 4. Mostrará un error mientras se ejecuta en el asistente de Google, pero no se preocupe 5. Regrese a la sección de vinculación de cuentas en la configuración del asistente y ingrese auth_uri como https://accounts.google.com/o/oauth2/auth y token_uri como https://accounts.google.com/o/oauth2/token 6. Coloque los ámbitos como https://www.googleapis.com/auth/userinfo.profile y https://www.googleapis.com/auth/userinfo.email y https://www.googleapis.com/auth/userinfo.profile . 7. Guarde los cambios.
-
En los registros del servidor de alojamiento, podemos ver el valor del token de acceso y, a través del token de acceso, podemos obtener los detalles sobre la dirección de correo electrónico.
- Agregue el token de acceso a este enlace " https://www.googleapis.com/oauth2/v1/userinfo?access_token= " y podremos obtener los detalles necesarios en la página json resultante.
-
accessToken = req.get("originalRequest").get("data").get("user").get("accessToken")
r = requests.get(link) print("Email Id= " + r.json()["email"]) print("Name= " + r.json()["name"])
Actualización, 25 de octubre de 2018:
A partir del 13 de septiembre de 2018, ahora hay una forma mucho más simple de acceder a la cuenta del usuario si su proyecto utiliza el inicio de sesión de Google. Google Sign-In for Assistant le dará un token de identificación con información sobre el usuario, incluida su identificación de Google, con su permiso. Este permiso se puede otorgar simplemente usando la voz y está bastante optimizado.
Puede combinar esto con un inicio de sesión de Google basado en la web o en la aplicación para obtener su permiso para acceder a los ámbitos de OAuth si necesita acceder a las API de Google.
Actualización, 25 de octubre de 2017:
A partir del 4 de octubre o del 7 de octubre, Google ha actualizado su política (nuevamente) para restaurar el idioma que restringe los puntos finales de OAuth que son válidos. Los términos ahora incluyen
Al implementar la vinculación de cuentas con OAuth, debe ser propietario de su punto final OAuth
y parece (de los comentarios a continuación) que ahora verifican los puntos finales de Google para evitar que este método funcione.
En este punto, lo único que puede hacer es configurar su propio servidor OAuth2.
Publicación original:
En términos generales, las tareas de autenticación que debe realizar se dividen en cuatro partes:
- Configure su proyecto (en la consola de la nube) para que la API del calendario esté habilitada y el cliente OAuth2 esté configurado correctamente.
- Configure la acción para vincular cuentas en la consola de acciones.
- Configure las acciones en la integración de Google para su API.AI Agent para indicar que es necesario iniciar sesión.
- Cuando API.AI llama a su webhook para cumplir una intención, incluirá un token de autenticación como parte del JSON. Puede usar este token para realizar llamadas a las API de Google que necesita.
Configurar proyecto en la nube
Debe configurar su proyecto en la nube para que tenga acceso a las API de Google que necesita y configurar el ID de cliente OAuth2, el secreto y el URI de redireccionamiento.
-
Vaya a https://console.cloud.google.com/apis/dashboard y asegúrese de tener seleccionado el proyecto con el que está trabajando. Luego, asegúrese de tener habilitadas las API que necesita.
-
Seleccione el menú "Credenciales" a la izquierda. Debería ver algo como esto:
-
Seleccione "Crear credenciales" y luego "ID de cliente OAuth"
-
Seleccione que esto es para una "aplicación web" (es ... un poco ...)
-
Ingresa un nombre. En la siguiente captura de pantalla, utilicé "Cliente de acción", así que recuerdo que esto es realmente para Acciones en Google.
-
En la sección "URI de redireccionamiento autorizado", debe incluir un URI del formulario
https://oauth-redirect.googleusercontent.com/r/your-project-id
reemplazando la parte "your-project-id" con ... . ID de su proyecto en la consola de la nube. En este punto, la pantalla debería verse así: -
Haga clic en el botón "Crear" y obtendrá una pantalla con su ID de cliente y secreto. Puede obtener una copia de estos ahora, pero también puede obtenerlos más adelante.
-
Haga clic en "Aceptar" y volverá a la pantalla "Credenciales" con el nuevo ID de cliente agregado. Puede hacer clic en el ícono de lápiz si alguna vez necesita obtener la ID y el Secreto nuevamente (o restablecer el secreto si se ha comprometido).
Configurar la consola de acción
Una vez que tengamos la configuración de OAuth para el proyecto, debemos decirle a Actions que esto es lo que usaremos para autenticar y autorizar al usuario.
-
Vaya a https://console.actions.google.com/ y seleccione el proyecto con el que trabajará.
-
En la Descripción general, realice la configuración necesaria hasta que pueda llegar al Paso 4, "Vinculación de cuentas". Esto puede requerir que establezca nombres e iconos; puede volver más tarde si es necesario para corregirlos.
- Seleccione el Tipo de concesión de "Código de autorización" y haga clic en Siguiente.
-
En la sección Información del cliente, ingrese el ID del cliente y el Secreto del cliente desde que creó las credenciales en la Consola de la nube. (Si olvida, vaya a la sección Credenciales de API de Cloud Console y haga clic en el lápiz).
-
Para la URL de autorización, ingrese
https://accounts.google.com/o/oauth2/v2/auth
-
Para la URL del token, ingrese
https://www.googleapis.com/oauth2/v4/token
-
Haga clic en Siguiente
- Ahora configura su cliente para los ámbitos que solicita. A diferencia de la mayoría de los otros lugares donde ingresa los ámbitos, debe tener uno por línea. Luego haga clic en Siguiente.
- Debe ingresar las instrucciones de prueba. Antes de enviar su Acción, estas instrucciones deben contener una cuenta de prueba y una contraseña que el equipo de revisión pueda usar para evaluarla. Pero puedes poner algo allí mientras estás probando y luego presionar el botón Guardar.
Configurar API.AI
En API.AI, debe indicar que el usuario debe iniciar sesión para usar la Acción.
-
Vaya a https://console.api.ai/ y seleccione el proyecto con el que está trabajando.
-
Seleccione "Integraciones" y luego "Acciones en Google". Enciéndelo si aún no lo has hecho.
-
Haga clic en la casilla de verificación "Se requiere iniciar sesión para dar la bienvenida".
Maneja cosas en tu webhook
Después de toda esa configuración, ¡manejar las cosas en tu webhook es bastante sencillo! Puede obtener un token de acceso de OAuth de una de dos maneras:
-
Si está utilizando la biblioteca de JavaScript, llame a
app.getUser().authToken
-
Si está mirando el cuerpo JSON, está en
originalRequest.data.user.accessToken
Utilizará este token de acceso para realizar llamadas contra los puntos finales de la API de Google utilizando métodos definidos en otra parte.
No necesita un token de actualización: el Asistente debe entregarle un token de acceso válido a menos que el usuario haya revocado el acceso.