我希望任何人(未经身份验证的用户)都能够调用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错误--我做错了什么?
1条答案
按热度按时间v8wbuo2f1#
Timestamp.fromDate()
方法的结果与存储在数据库中的时间Timestamp不同。结果是querySnapshot
始终为空。因为您选择的是日期(而不是日期/时间),所以我建议您使用一个简单的字符串格式,例如
YYYYMMDD
。