Firebase的云功能 - 获取当前用户ID

nic*_*rke 21 firebase google-cloud-functions

花了一段时间寻找一个似乎是一个简单问题的解决方案,但是......如何在云功能中获取当前用户的详细信息(何时不使用functions.auth触发器)?我相信必须有一个简单的解决方案.(我希望)

感谢您的回复...刚刚完成了但是如何在存储触发事件中从Firebase数据库中获取/ user/uid?例如

exports.addUploadInfoToDatabase = functions.storage.object().onChange(event => {
  console.log("firebase storage has been changed");
  // need to find the uid in here somehow
  admin.database().ref(`/user/uid`).push({testKey:"testData"});
})
Run Code Online (Sandbox Code Playgroud)

如果我错过了你的回复中的重点,那就是Applogies.

谢谢...

Kim*_*Kim 17

首先,您可以通过呼叫用户来获取当前登录的用户tokenId getIdToken():https://firebase.google.com/docs/reference/js/firebase.User#getIdToken

firebase.auth().currentUser.getIdToken(true)
.then(function (token) {
    // You got the user token
})
.catch(function (err) {
    console.error(err);
});
Run Code Online (Sandbox Code Playgroud)

然后将其发送到您的云功能.

然后在您的云功能中,您可以使用:https://firebase.google.com/docs/auth/admin/verify-id-tokens

例:

admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    var uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });
Run Code Online (Sandbox Code Playgroud)

decodeToken的文档位于:https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken#uid

DecodedIdToken包含用户uid,然后您可以通过以下方式告知用户:https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#getUser

返回UserRecord https://firebase.google.com/docs/reference/admin/node/admin.auth.UserRecord

  • 我不明白提出的答案如何解决问题.该海报正在响应由Google云端存储触发的Firebase事件,因此没有"客户端"可以获取ID令牌并将其传递给该功能.我试图解决类似的问题,但有一个由Firestore触发的事件.我需要访问执行导致事件触发的Firestore操作的用户. (24认同)
  • 实际上,这很简单。获取引起更改的用户的uid:functions.database.ref('...')。onWrite((change,context)=> {const uid = context.auth.uid;});`然后使用`admin.auth()。getUser(uid)`获取用户。 (5认同)
  • 感谢您的回复...“首先,您可以将当前登录的用户 tokenId 从客户端发送到您的云功能”....您的意思是向云功能传递一个值吗?我找不到任何文件来实现这一点...... (2认同)
  • 你如何访问`firebase.auth().currentUser`?我得到了'firebase未定义'.如果你已经有一个`currentUser`为什么不直接获得`.uid? (2认同)
  • const uid = context.auth.uid; (2认同)

归档时间:

查看次数:

11265 次

最近记录:

8 年,4 月 前