我正在开发一个应用程序,在该应用程序中,我需要在客户服务中帮助用户完成某些任务。与其构建一个单独的管理界面,我更希望能够模拟用户为他们使用该应用程序。
Firebase可以做到这一点吗?
答案 0 :(得分:18)
是!
admin.initializeApp({
credential: admin.credential.cert(service_account_json),
})
const userId = "[impersonating user uid string]"
const token = await admin.auth().createCustomToken(userId)
const token = "[token string obtained in step 2]"
firebase.auth().signInWithCustomToken(token)
完成!。您现在正在模拟所选用户。
出于明显的安全原因,后端端点(例如Google Cloud Function)应进行身份验证,并验证请求自定义令牌的用户是否实际上是特权用户(admin),以避免任何经过身份验证的用户都可以冒充任何人。
答案 1 :(得分:1)
Firebase身份验证客户端SDK没有内置的模拟机制。要以特定用户的身份登录这些SDK,必须知道该用户的凭据。
Firebase Admin SDK支持模拟用户与实时数据库的交互。由于Admin SDK旨在在受信任的环境(例如您的开发计算机,您控制的服务器或Cloud Functions)中运行,因此它们具有管理特权。要在此处了解有关模拟普通用户的更多信息,请参阅authenticating with limited privileges上的文档。