Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!