Estoy usando la base de datos en tiempo real de firebase para almacenar datos, y tengo reglas de permisos configuradas para:
{ "rules": { "users": { "$uid": { ".write": "$uid === auth.uid", ".read": "$uid === auth.uid" } } } } Estoy tratando de leer y escribir en la base de datos usando rest/fetch, y parece funcionar bien. Pero después de investigar un poco, parece que solo funciona para mí específicamente, y otros usuarios reciben una respuesta 401 unauthorized . mi código parece
chrome.identity.getAuthToken({ interactive: true }, (token) => { let url = this.url + `users/${id}.json?access_token=${token}`; const headers = new Headers({ "Content-Type": "application/json", }); fetch(url, { headers: headers }) .then((res) => { console.log(res); return res.json(); }) }); El token se obtiene llamando a getAuthToken desde la página de fondo de las extensiones. id se encuentra llamando a chrome.identity.getProfileUserInfo :
chrome.identity.getProfileUserInfo((info) => { email = info.email; userId = info.id; }); También tengo el siguiente alcance, que pensé que permitiría leer y escribir desde firebase: https://www.googleapis.com/auth/datastore
¿Algunas ideas? Estoy muy confundido por qué funcionaría, pero solo para mí.
De la documentación de Firebase sobre la generación de un token de acceso para acceder a la API REST de Realtime Database :
genere un token de acceso de Google OAuth2 con los siguientes alcances requeridos:
Lo más probable es que te estés perdiendo ese segundo alcance.
Tenga en cuenta, por cierto, que esto le otorgará acceso administrativo completo a la base de datos y no seguirá sus reglas de seguridad. Estas personas son esencialmente colaboradores en su proyecto: pueden ver/editar todos los datos o no pueden.
Para permitir que un usuario acceda a la base de datos y siga las reglas de seguridad, el usuario deberá iniciar sesión con Firebase Authentication y usted deberá pasar su token de identificación a la API REST.