admin.auth()。setCustomUserClaims“不是函数”

时间:2017-10-05 13:39:52

标签: javascript firebase firebase-admin

在运行Express的Firebase Cloud功能中,我尝试在客户端将令牌发布到setCustomClaims路由时设置自定义用户声明。当我在该路线中呼叫admin.auth().setCustomUserClaims(uid, {admin: true})时,我收到一条错误消息,说这是“不是一个功能”。

我的身份验证提供程序是通过Firebase身份验证的电子邮件/密码提供程序(即我不创建自定义令牌)。

我是否必须创建自定义令牌才能设置自定义用户声明?

这是我的云功能代码:

const functions = require('firebase-functions');
const admin = require("firebase-admin");
import express from "express"

admin.initializeApp(functions.config().firebase);
const app = express()

app.post('/setCustomClaims', (req, res) => {
    uid = "some-uid"
    admin.auth().setCustomUserClaims(uid, {admin:true}).then(()=> {
        res.end(JSON.stringify( { status: 'success' } ) );
    })
});

export let api = functions.https.onRequest((request, response) => {
  if (!request.path) {
    request.url = `/${request.url}` // prepend '/' to keep query params if any
  }
  return app(request, response)
})

2 个答案:

答案 0 :(得分:2)

npm install firebase-admin@latest --save

firebase-admin@5.4.3工作,祝好玩有趣。

注意:客户需要此代码

// Force token refresh. The token claims will contain the additional claims.
firebase.auth().currentUser.getIdToken(true);

答案 1 :(得分:-1)

在新的SDK中,您不再通过新的Firebase实例化数据库引用。相反,您将通过 firebase.initializeApp()初始化SDK:

var ref = new Firebase("https://databaseName.firebaseio.com");

 // See https://firebase.google.com/docs/web/setup#project_setup for how to

 // auto-generate this config
 var config = {
 apiKey: "apiKey",
 authDomain: "projectId.firebaseapp.com",
 databaseURL: "https://databaseName.firebaseio.com"
 };

 firebase.initializeApp(config);

 var rootRef = firebase.database().ref();>

我在stackoverflow上发现了同样的问题,请查看:firebase.database is not a function