Tengo un SPA que se supone que debe interactuar con IoT Core y Cloud Pub/Sub a través gapi .
Primero usé solo IoT Core. Agregué el alcance necesario tanto a la configuración de la aplicación en API y servicios/credenciales como a la llamada de inicialización de mi cliente gapi documentada aquí .
Funcionó bien, la pantalla de consentimiento de OAuth mostró el nuevo alcance, las llamadas a la API de IoT Core estaban funcionando.
Ahora quiero agregar Cloud Pub/Sub. Nuevamente, se agregó el alcance tanto a la configuración de la aplicación como a la llamada de inicialización de gapi . Aquí está el argumento para gapi.client.init :
{ apiKey: config.firebase.apiKey, clientId: config.clientId, discoveryDocs: [ 'https://cloudiot.googleapis.com/$discovery/rest?version=v1', 'https://pubsub.googleapis.com/$discovery/rest?version=v1', ], scope: 'https://www.googleapis.com/auth/pubsub https://www.googleapis.com/auth/cloudiot', }Sin embargo, cuando realizo una llamada a la API de Pub/Sub, obtengo esta respuesta:
{ "error": { "code": 403, "message": "Request had insufficient authentication scopes.", "status": "PERMISSION_DENIED" } }Esto es lo que probé:
Todavía no hay suerte. Lo interesante es que, aunque ahora ambos ámbitos se agregan a la aplicación en el lado de la nube, después de revocar los permisos de la aplicación y volver a iniciar sesión, la pantalla de consentimiento solicita permiso solo para el ámbito de IoT Core. El alcance de Pub/Sub no aparece allí.
¿Alguna idea de lo que me estoy perdiendo?
Encontré el problema. El inicio de sesión fue iniciado por otra parte del código que no tenía agregado el alcance de Pub/Sub.