Urc*_*boy 7 firebase firebase-authentication google-cloud-functions
我需要在使用 firebase 身份验证的 google 登录期间传递自定义值 (device_id)。此值稍后通过侦听身份验证事件触发器从云函数中获取,然后将该值添加到 Firestore
我知道您可以将值作为 http 触发器的查询参数传递。但是,在我的情况下,我只需要在身份验证期间和之后传递并获取值。因此,firebase 身份验证中是否存在某种 auth.addMetaData(metadata) 函数?
我需要能够在身份验证触发器之后检索自定义数据,就像我们可以执行 user.email 一样。我需要类似 user.custom_data 的东西
Tom*_*und 14
尽管 Doug 提到了 Firebase Custom Claims,但我认为值得提供额外的文档,因为它确实允许您向 Firebase User 对象添加简单的元数据。
isAdministrator声明将要求用户在激活之前注销/登录。这是一个关于如何设置device_idFirebase 用户对象的示例(在服务器上使用firebase-admin):
await admin.auth().setCustomUserClaims(uid, { deviceId })
注意:您不能在客户端上设置自定义声明。
然后device_id从服务器上的用户检索:
const userRecord = await admin.auth().getUser(uid)
console.log(userRecord.customClaims.deviceId)
……在客户端:
const idTokenResult = await firebase.auth().currentUser.getIdTokenResult()
console.log(idTokenResult.claims.deviceId)
有趣的是,自定义声明也可以在 Firebase 安全规则中使用。这个(有点不切实际)的例子只允许用户deviceId === 123查看数据:
{
  "rules": {
    "secureContent": {
      ".read": "auth.token.deviceId === 123"
    }
  }
}
Dou*_*son 10
Firebase 身份验证不支持客户端提供的任何类型的额外数据。与 Firebase 为每个用户存储的元数据最接近的是custom claim ,但是,存储在那里的 JSON blob 只能由特权服务器端应用程序设置。
如果您需要存储每个用户的数据,由客户端应用程序编写,您可能应该为此使用数据库(Cloud Firestore 或实时数据库),受 Firebase 安全规则保护,以便只有最终用户可以读取和写入他们自己的数据. 您还可以使用 HTTP 类型的 Cloud Function 将数据传递到您的函数中以记录在数据库中。
| 归档时间: | 
 | 
| 查看次数: | 3737 次 | 
| 最近记录: |