使用firebase admin sdk更新用户phoneNumber无法正常工作

时间:2018-09-22 23:46:37

标签: node.js firebase-authentication google-cloud-functions firebase-admin

我想更新用于身份验证的用户电话号码,我正在使用firebase admin sdk更新用户的电话号码,但它似乎对我不起作用,而且我也没有做错什么-

根据用于管理用户的docs,我正在云功能中使用以下代码-

import * as functions from "firebase-functions";
import express = require("express");
import bodyParser = require("body-parser");
import admin = require("firebase-admin");
const serviceAccount = require("./ServiceAccountKey.json");


admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://projectname.firebaseio.com"
});

const db = admin.firestore();


const settings = { timestampsInSnapshots: true };
db.settings(settings);

const app = express();
app.use(bodyParser.json());
app.use(
  bodyParser.urlencoded({
    extended: false
  })
);
app.use(function(req, res, next) {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept"
  );
  res.setHeader(
    "Access-Control-Allow-Methods",
    "POST, GET, PATCH, DELETE, OPTIONS"
  );
  next();
});

/* Change user Mobile Number Request */
app.post("/mchangereq", (req, res) => {

  return admin
    .auth()
    .updateUser(req.body.uid, {
      phoneNumber: req.body.phoneNumber,
      emailVerified:Boolean(req.body.emailVerified)

    })
    .then((s) => {

      res.status(201).json({ message: "mobile number status", data:{...s} });
    }).catch(e => res.status(400).json({ err: e }));

});

exports.apphost = functions.https.onRequest(app);

代码似乎可以正常工作,但它不是在更新phoneNumber,我曾尝试更新成功更新了emailVerified之类的其他值,但phoneNumber没有更新。

使用Postman快照输出进行测试:Postman POST request result

请告诉我该查询是否需要其他信息,
如果还有其他方法可以更新phoneNumber,那么除了文档链接之外,

1 个答案:

答案 0 :(得分:0)

通过Firebase Admin SDK更新用户的电话号码后,请确保致电firebase.auth().currentUser.reload()。 您可能还想致电firebase.auth().currentUser.getIdToken(true)来强制令牌刷新也包含更新的电话号码。