在运行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)
})
答案 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