Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

155
Vistas
admin.database().ref() devuelve una instantánea nula cuando el valor está presente

Estoy creando una aplicación que llama a la API de Twitter desde Cloud Functions. El token de acceso del usuario se almacena en Firebase RTDB.

El problema es que cuando no llamo al método de inicio de sesión Auth de Firebase, la base de datos devuelve una instantánea nula.

Cuando llamo al inicio de sesión de autenticación de Firebase (código a continuación), funciona normalmente

 const functions = require("firebase-functions"); const Twitter = require('twitter'); const admin = require('firebase-admin'); const cors = require('cors')({ origin: true }); admin.initializeApp(); exports.tweet = functions.https.onRequest(async (req, res) => { console.log('devs do something', req.body) cors(req, res, () => { if (req.body.uid) { var uid = req.body.uid var promise = admin.database().ref(`auth/`).child(uid).once('value'); return promise.then(snapshot => { var event = snapshot.val() const client = new Twitter({ access_token_key: event.accessToken, access_token_secret: event.secret, consumer_key: "HUYEtFs1NJVGlFqBDq7GJ6HF2",//functions.config().twitter.key, consumer_secret: "ChcSAVwBbd4wLXBSZlIu6nUi6mjsk4b6HqoivuhziP3zAkgGni"//functions.config().twitter.secret //consumer_token_secret: "ChcSAVwBbd4wLXBSZlIu6nUi6mjsk4b6HqoivuhziP3zAkgGni"//functions.config().twitter.secret }); var params = { "tweet_mode": "extended" } client.get('statuses/home_timeline', params, function(error, tweets, response) { if (error) throw error; res.send(tweets) }); }) } else { console.log("No UID provided") } }) })

Este código solo funciona cuando se llama primero a la siguiente función. Si no se llama, entonces admin.database().ref('auth/${uid}') devuelve una instantánea nula.

El siguiente código redirige al usuario para que inicie sesión con Twitter Popup, lo cual es un inconveniente cada vez.

 async login(context) { console.log("auth.login()"); return await auth .signInWithPopup(provider) .then(async (result) => { // This gives you a the Twitter OAuth 1.0 Access Token and Secret. // You can use these server side with your app's credentials to access the Twitter API. var credential = result.credential; var accessToken = credential.accessToken; var secret = credential.secret; // The signed-in user info. var user = result.user; db.ref(`auth/${user.uid}/`).update({ accessToken, secret }) return user // ... })

¿Existe una conexión entre Firebase Auth y Firebase Admin que desconozco?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda