firebase Firestore云函数API端点

8zzbczxx  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(170)

我希望任何人(未经身份验证的用户)都能够调用API,并根据FN、LN、DOB返回他们所依赖的计划层。我通过云函数创建了一个HTTP端点,但即使在更新权限后也会收到403错误。

import * as functions from "firebase-functions";
import * as admin from "firebase-admin";

admin.initializeApp();

export const checkEligibility = functions.https.onRequest(async (req, res) => {
  const firstName = req.body.firstName;
  const lastName = req.body.lastName;
  const dateOfBirth = new Date(req.body.dateOfBirth);

  console.log(firstName);

  const eligibleUsersRef = admin.firestore().collection("eligible_people");
  const querySnapshot = await eligibleUsersRef
    .where("firstName", "==", firstName)
    .where("lastName", "==", lastName)
    .where("dob", "==", admin.firestore.Timestamp.fromDate(dateOfBirth))
    .get();

  if (querySnapshot.empty) {
    // User is not eligible, return an error message
    res.status(403).send("User is not eligible");
  } else {
    // User is eligible, return the name of the tier
    const eligibleUser = querySnapshot.docs[0].data();
    res.json({tier: eligibleUser.tier});
  }
});

当我从应用调用此函数时,我收到以下日志:

Function execution took 4077 ms, finished with status code: 403

我已经在Google Cloud中更新了这个的权限,这样所有的用户都是调用者,类似于:Firebase Functions HTTPS 403 Forbidden。但是,我仍然收到这个403错误--我做错了什么?

v8wbuo2f

v8wbuo2f1#

Timestamp.fromDate()方法的结果与存储在数据库中的时间Timestamp不同。结果是querySnapshot始终为空。
因为您选择的是日期(而不是日期/时间),所以我建议您使用一个简单的字符串格式,例如YYYYMMDD

相关问题