【问题标题】:Getting id of the current user from Cloud Functions and Firebase从 Cloud Functions 和 Firebase 获取当前用户的 ID
【发布时间】:2018-01-28 23:46:58
【问题描述】:

我正在使用谷歌云功能通过 Firebase 注册推送通知。在我的应用程序中,我有一个通知参考,当当前用户获得新的关注者或喜欢等时,该参考会发生变化。截至目前,只要整个参考孩子发生变化,我就可以将通知发送到手机

例如,如果喜欢任何单个帖子,那么它将发送通知。我需要做的是观察当前用户只发送通知那个人。

这是我的 JavaScript 文件

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendPushNotification = functions.database.ref('/notification/{id}').onWrite(event => {
const payload = {
notification: {
    title: 'New message arrived',
    body: 'come check it',
    badge: '1',
    sound: 'default',
}
  };

  return admin.database().ref('fcmToken').once('value').then(allToken => {
    if (allToken.val()) {
        const token = Object.keys(allToken.val());
        return admin.messaging().sendToDevice(token, payload).then(response => {

        });
    }
  });

});

我想替换这一行:

functions.database.ref('/notification/{id}').onWrite(event => {

有了这个:

functions.database.ref('/notification/{id}').(The current user ID).onWrite(event => {

如何获取当前用户id?

【问题讨论】:

标签: javascript firebase firebase-cloud-messaging google-cloud-functions


【解决方案1】:

对于 Swift 3.0 - 4.0

你可以这样做:

import Firebase
import FirebaseAuth


class YourClass {

let user = Auth.auth().currentUser
let userID = user.uid

// user userID anywhere 

}

【讨论】:

  • 这是swift语言还是Json语言。我正在用 js 编码
  • 这是斯威夫特!抱歉,您有一个 Swift、Firebase 标签,所以我以为您想使用 swift。
【解决方案2】:

您似乎对 JavaScript 很陌生(称它为 JSON 有点像这样)。 Cloud Functions for Firebase 并不是学习 JavaScript 的最佳方式。我建议先阅读Firebase documentation for Web developers 和/或阅读Firebase codelab for Web developer。它们涵盖了许多基本的 JavaScript、Web 和 Firebase 交互。完成这些之后,您将能够更好地为 Cloud Functions 编写代码。

现在回到您的问题:Cloud Functions 中没有“当前用户”的概念。您的 JavaScript 代码在服务器上运行,所有用户都可以通过写入数据库来触发代码。

可以找出是什么用户触发了该功能,但这也不是您想要的。触发通知的用户不是需要接收消息的用户。相反,您想要的是读取通知的目标用户。

一种方法是从触发该函数的数据库路径中读取它。如果您将每个用户的通知保留在数据库中,如下所示:

user_notifications
  $uid
    notification1: ...
    notification2: ...

您可以像这样触发云功能:

exports.sendPushNotification = functions.database.ref('/user_notification/{uid}/{id}').onWrite(event => {

然后在该函数的代码中,获取用户的 UID:

var uid = event.params.uid;

【讨论】:

  • 你是个野兽!我很感激你!
  • @FrankvanPuffelen,在你原来的回答中,你提到“你可以弄清楚是什么用户触发了这个功能”,你能提供一个提示吗?
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 2021-10-06
  • 2018-05-21
相关资源
最近更新 更多