在我们的应用程序中,我们使用 Firebase 的自定义登录功能将一些元数据存储在用户的身份验证令牌中。
稍后,我们将此令牌发送到我们的一个 Web 应用程序,以使用新的管理令牌禁用安全规则来代表用户执行任务。这个想法是,经过身份验证的用户不能直接写入特定位置,但在完成一些服务器端计算和验证后,可以将数据写入该位置。
这是我正在尝试做的示例代码:
var testRef = new Firebase(firebaseApp + 'test');
testRef.auth(userFirebaseAuthToken, function(error, result) {
if (!error) {
var userId = result.auth.userId;
// perform validations and calculations
var tokenGenerator = new FirebaseTokenGenerator(firebaseSecret);
var token = tokenGenerator.createToken({admin: true});
var protectedRef = new Firebase(firebaseApp + '/protected/');
protectedRef.auth(token, function(error) {
if (!error) {
protectedRef.child('foo').push({id: userId});
}
});
}
});
但我得到这个错误:
FIREBASE WARNING: set at /protected/foo/-Ityb1F6_G9ZrGCvMtX- failed: permission_denied
当期望的行为是能够使用管理员令牌在该位置写入时。
我知道这可能不是 Firebase 问题,而是一些 JavaScript 好/坏部分,但我需要做的是代表用户在某个受保护的位置写入,即使该用户无权在该位置写入,但是需要进行身份验证。