javascript - Firebase admin().auth().getUser(uid) internal error -
firebaseadmin.auth().getuser(uid) causes following error:
error: internal error has occurred. raw server response: "{}" @ firebaseautherror.firebaseerror [as constructor] (/home/nowuser/src/node_modules/firebase-admin/lib/utils/error.js:39:28) @ new firebaseautherror (/home/nowuser/src/node_modules/firebase-admin/lib/utils/error.js:104:23) @ function.firebaseautherror.fromservererror (/home/nowuser/src/node_modules/firebase-admin/lib/utils/error.js:128:16) @ /home/nowuser/src/node_modules/firebase-admin/lib/auth/auth-api-request.js:364:45 @ <anonymous> @ process._tickcallback (internal/process/next_tick.js:169:7) this error occurs only when deploy production on zeit now; when run app in production mode on localhost, not error. ensured app runs same locally , on production putting in docker container.
how can fix error?
note:
i aware question has been posted here, accepted answer (change permissions of service account) did not work me. also, question not show full error received, i'm not convinced it's same error.
update: below code pertains question. basically, server starts express server uses post authwithidtoken route set cookie containing user's firebase auth idtoken. uses authenticationmiddleware check cookie idtoken, , if exists, decode token , fetch user's data. errors occur @ getuser(uid) step. getfirebaseadmininitconfig function gets init config, provided using env variables.
# server.js - excerpt showing authentication middleware , authwithidtokenroute const server = express() # ... allowparsingpostbody(server) server.use(cookieparser()) server.use('*', authenticationmiddleware) server.post('/authwithidtoken', authwithidtokenroute) # ... # authenticationmiddleware.js const { firebase_id_token_cookie } = require('../universal/constants') const firebaseadmin = require('firebase-admin') const winston = require('winston') const getfirebaseadmininitconfig = require('./getfirebaseadmininitconfig') winston.info( 'initializing firebase admin config:', getfirebaseadmininitconfig() ) firebaseadmin.initializeapp(getfirebaseadmininitconfig()) async function decodetoken (firebaseidtoken) { try { const decodedtoken = await firebaseadmin.auth().verifyidtoken(firebaseidtoken) return decodedtoken } catch (error) { if (error.code !== 'auth/internal-error') throw error winston.warn( 'firebase admin auth verifyidtoken auth/internal-error:', { firebaseidtoken, error } ) } } const getfullurl = (req) => ( req.protocol + '://' + req.get('host') + req.originalurl ) const getredirecturl = (req) => ( `/redirect?url=${encodeuricomponent(getfullurl(req))}` ) async function getuserdata (uid) { try { const userdata = await firebaseadmin.auth().getuser(uid) return userdata } catch (error) { if (error.code !== 'auth/internal-error') throw error winston.warn( 'firebase admin auth getuser auth/internal-error:', { uid, error } ) } } async function authenticationmiddleware (req, res, next) { const { firebaseidtoken } = req.cookies if (firebaseidtoken) { try { req.currentuserserverdata = await getuserdata( (await decodetoken(firebaseidtoken)) .uid ) } catch (error) { res.clearcookie(firebase_id_token_cookie) // if cookie id token has expired, redirect user // /redirect?url={requestedurl} - client try set // new cookie , redirect requestedurl if (error.code === 'auth/argument-error') { return res.redirect(getredirecturl(req)) } else { winston.warn('unexpected error occurred while processing firebase idtoken:', error) } } } next() } authenticationmiddleware.authwithidtokenroute = async function ({body: { idtoken }}, res) { try { await decodetoken(idtoken) const expiredate = (new date()) expiredate.setyear((new date()).getfullyear() + 1) res.cookie(firebase_id_token_cookie, idtoken, { expires: expiredate }) return res.send() } catch (error) { winston.warn('authwithidtokenroute unexpected error', { idtoken, error }) if (error.code === 'auth/argument-error') { return res .status(400) .send({ error: new error('could not decode token') }) } else { return res.status(500).send() } } } module.exports = authenticationmiddleware # getfirebaseadmininitconfig.js const firebaseadmin = require('firebase-admin') // env variables set in .env file , loaded dotenv. // see more info: https://github.com/motdotla/dotenv const getfirebasecredentials = () => { const { firebase_type: type, firebase_project_id: projectid, firebase_private_key_id: privatekeyid, firebase_private_key: privatekey, firebase_client_email: clientemail, firebase_client_id: clientid, firebase_auth_uri: authuri, firebase_token_uri: tokenuri, firebase_auth_provider_cert_url: authproviderx509certurl, firebase_client_cert_url: clientx509certurl } = process.env return { type, projectid, privatekeyid, privatekey, clientemail, clientid, authuri, tokenuri, authproviderx509certurl, clientx509certurl } } const getdatabaseurl = () => { const { projectid } = getfirebasecredentials() return `https://${projectid}.firebaseio.com` } module.exports = () => ({ credential: firebaseadmin.credential.cert(getfirebasecredentials()), databaseurl: getdatabaseurl() }) and here logs production app, deployed zeit now:
08/03 08:07 (4m) req "get /ka/login http/2.0" 69.243.47.183 - "" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:07 (4m) res "get /ka/login http/2.0" 200 3285 08/03 08:07 (4m) req "get /_next/01caf4c5-c7ab-4006-9f22-0e27366468c1/page/login http/2.0" 69.243.47.183 - "https://georgian-chant-site-dzhuccwhhp.now.sh/ka/login" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:07 (4m) res "get /_next/01caf4c5-c7ab-4006-9f22-0e27366468c1/page/login http/2.0" 200 37351 08/03 08:08 (4m) req "get /_next/01caf4c5-c7ab-4006-9f22-0e27366468c1/page/admin http/2.0" 69.243.47.183 - "https://georgian-chant-site-dzhuccwhhp.now.sh/ka/login" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (4m) res "get /_next/01caf4c5-c7ab-4006-9f22-0e27366468c1/page/admin http/2.0" 200 675 08/03 08:08 (4m) req "post /authwithidtoken http/2.0" 69.243.47.183 - "https://georgian-chant-site-dzhuccwhhp.now.sh/ka/login" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (3m) debug: successful outgoing request. request: { port: null, path: '/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com', host: 'www.googleapis.com', protocol: 'https:', auth: null, hostname: 'www.googleapis.com', hash: null, search: null, query: null, pathname: '/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com', href: 'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com', method: 'get', headers: { host: 'www.googleapis.com' }, body: '' } response: statuscode=200, expires=thu, 03 aug 2017 17:45:27 gmt, date=thu, 03 aug 2017 10:45:53 gmt, vary=x-origin, origin,accept-encoding, content-type=application/json; charset=utf-8, x-content-type-options=nosniff, x-frame-options=sameorigin, x-xss-protection=1; mode=block, server=gse, cache-control=public, max-age=25174, must-revalidate, no-transform, age=4937, alt-svc=quic=":443"; ma=2592000; v="39,38,37,36,35", accept-ranges=none, connection=close, , httpversion=1.1, url=, method=null, body={ "{{hash retracted}}": "{{certificate retracted}}", "{{hash retracted}}": "{{certificate retracted}}", "{{hash retracted}}": "{{certificate retracted}}", "{{hash retracted}}": "{{certificate retracted}}"" } 08/03 08:08 (3m) res "post /authwithidtoken http/2.0" 200 897 08/03 08:08 (2m) req "get /ka/admin http/2.0" 69.243.47.183 - "" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (2m) warn: firebase admin auth getuser auth/internal-error: uid={{uid retracted}}, code=auth/internal-error, message=an internal error has occurred. raw server response: "{}" 08/03 08:08 (2m) res "get /ka/admin http/2.0" 302 184 08/03 08:08 (2m) req "get /ka/login http/2.0" 69.243.47.183 - "" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (2m) warn: firebase admin auth getuser auth/internal-error: uid={{uid retracted}}, code=auth/internal-error, message=an internal error has occurred. raw server response: "{}" 08/03 08:08 (2m) res "get /ka/login http/2.0" 200 3285 08/03 08:08 (2m) req "post /authwithidtoken http/2.0" 69.243.47.183 - "https://georgian-chant-site-dzhuccwhhp.now.sh/ka/login" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (2m) res "post /authwithidtoken http/2.0" 200 897 08/03 08:08 (2m) warn: firebase admin auth getuser auth/internal-error: uid={{uid retracted}}, code=auth/internal-error, message=an internal error has occurred. raw server response: "{}" 08/03 08:08 (2m) req "post /authwithidtoken http/2.0" 69.243.47.183 - "https://georgian-chant-site-dzhuccwhhp.now.sh/ka/login" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (2m) warn: firebase admin auth getuser auth/internal-error: uid={{uid retracted}}, code=auth/internal-error, message=an internal error has occurred. raw server response: "{}" 08/03 08:08 (2m) res "post /authwithidtoken http/2.0" 200 894 08/03 08:08 (2m) req "post /authwithidtoken http/2.0" 69.243.47.183 - "https://georgian-chant-site-dzhuccwhhp.now.sh/ka/login" "mozilla/5.0 (macintosh; intel mac os x 10_12_0) applewebkit/537.36 (khtml, gecko) chrome/59.0.3071.115 safari/537.36" 08/03 08:08 (2m) res "post /authwithidtoken http/2.0" 200 894 08/03 08:08 (2m) warn: firebase admin auth getuser auth/internal-error: uid={{uid retracted}}, code=auth/internal-error, message=an internal error has occurred. raw server response: "{}" update 8/15/2017: here's stacktrace error above when run firebaseadmin v5.2.0 (above stacktrace earlier version of firebaseadmin).
firebase admin auth getuser auth/internal-error: uid=rbwhjqy3imstgnyvzictt8m48co1, code=auth/internal-error, message=an internal error has occurred. raw server response: "{}", stacktrace=error: internal error has occurred. raw server response: "{}" @ firebaseautherror.firebaseerror [as constructor] (/myapp/node_modules/firebase-admin/lib/utils/error.js:39:28) @ new firebaseautherror (/myapp/node_modules/firebase-admin/lib/utils/error.js:104:23) @ function.firebaseautherror.fromservererror (/myapp/node_modules/firebase-admin/lib/utils/error.js:128:16) @ /myapp/node_modules/firebase-admin/lib/auth/auth-api-request.js:399:45 @ <anonymous> @ process._tickcallback (internal/process/next_tick.js:188:7)
Comments
Post a Comment