【发布时间】:2020-09-07 19:31:57
【问题描述】:
我已经检查了有关此问题的其他堆栈,但仍然不确定为什么我会收到权限不足错误。可能是我没有安全感。
我正在尝试从 2 个不同的 firebase 帐户同步用户。第一个帐户在第二个帐户上调用 firebase 函数。如果用户不存在,它会创建并执行一些数据库。如果用户存在,则它会创建一个自定义令牌并将其传递回第一个帐户以在 iframe 查询参数中使用。
我已经创建了 IAM 服务帐户,创建了密钥并保存到文件,并像其他堆栈解释的那样编辑了服务令牌权限,但我仍然收到错误消息。这是我的函数开始:
const firebaseConfig = {
credential: admin.credential.applicationDefault(),
apiKey: "xxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "itsli7-87384.firebaseapp.com",
databaseURL: "https://itsli7-87384.firebaseio.com",
projectId: "itsli7-87384",
storageBucket: "itsli7-87384.appspot.com",
messagingSenderId: "503897448704",
appId: "1:503897448704:web:45773bfb231a24bbe213e5"
}
fb.initializeApp(firebaseConfig);
admin.initializeApp(firebaseConfig);
函数正在运行这个。
return admin.auth().getUser(data.user.uid)
.then(async function () {
return admin.auth().createCustomToken(data.user.uid)
.then(function (customToken) {
res.send(customToken);
})
.catch(function (error) {
console.log('Error creating custom token:', error);
});
错误
代码:auth/insufficient-permission
创建自定义令牌时出错:FirebaseAuthError:调用者没有 获得许可;请参阅 https://firebase.google.com/docs/auth/admin/create-custom-tokens 为 有关如何使用此功能和排除故障的更多详细信息。
【问题讨论】:
-
请编辑问题以显示错误。
-
好点@DougStevenson。谢谢,已添加
-
您的服务帐号好像没有权限。您是否通过 URL 获得有关故障排除的建议?如果是这样,您尝试了什么?
-
是的,我启用了 IAM 服务。然后创建一个服务帐户来获取密钥文件。将文件下载到函数文件夹并运行 env 导出代码以将 admin.credential.applicationDefault() 放入配置。然后我更新了服务帐户配置以拥有令牌创建权限。顺便说一句,它在本地工作,部署后出错。
标签: node.js firebase-authentication firebase-admin