Ios 如何使用原始JSON调用Firebase云函数?
我有一个Firebase云功能Ios 如何使用原始JSON调用Firebase云函数?,ios,firebase,google-cloud-functions,Ios,Firebase,Google Cloud Functions,我有一个Firebase云功能checkUsers。在《邮递员》中的效果与所附的截图类似 这是云函数 app.post('/', (req, res) => { if (req.body.emails === undefined) { res.status(422).send("Missing email addresses input"); return; } const emailsToCheck = req.body.emails; if (ema
checkUsers
。在《邮递员》中的效果与所附的截图类似
这是云函数
app.post('/', (req, res) => {
if (req.body.emails === undefined) {
res.status(422).send("Missing email addresses input");
return;
}
const emailsToCheck = req.body.emails;
if (emailsToCheck.length == 0) {
res.status(422).send("No email addresses provided");
return;
}
var existingEmails = [];
var emailsChecked = [];
listAllUsers(function(page) {
page.forEach(function(record) {
existingEmails.push(record.toJSON()["email"].toLowerCase());
});
}, function(lastPage) {
// Here, we should have all the users
lastPage.forEach(function(record) {
existingEmails.push(record.toJSON()["email"].toLowerCase());
});
// Iterating over emailsToCheck and checking if the email is in existingEmails
emailsToCheck.forEach(function(record) {
const exists = existingEmails.includes(record);
emailsChecked.push({ email: record, exists: exists });
});
res.status(200).send(emailsChecked);
});
});
exports.checkUsers = functions.https.onRequest(app);
当我尝试从iOS SDK调用相同的函数时,它不起作用
func checkEmails(
_ contacts: [SIContact],
_ completion: @escaping (([SIContact]) -> Void)
) {
let data = ["aaa", "akshit.zaveri@gmail.com", "bbb"]
let params = ["emails": data]
self.functions.httpsCallable("checkUsers").call(params) { (result, error) in
if let error = error {
print("Error while checking emails \(error)")
return completion(contacts)
}
guard let results = result?.data as? [[String: Any]] else {
return completion(contacts)
}
print(results)
}
}
更新:
我收到422,缺少电子邮件地址输入错误。只有在请求中找不到emails参数时才应该返回,正如我们在上面的云函数代码中看到的那样
我已经试过调试它,我的结论是iOS代码没有正确地传递电子邮件数组。你弄错了。它们的工作方式不同。不能使用Firebase SDK for callable函数调用某些HTTP端点。如果您想调用HTTP端点,则需要为您的平台使用HTTP库。您正与之混淆。它们的工作方式不同。不能使用Firebase SDK for callable函数调用某些HTTP端点。如果您想调用HTTP端点,您需要为您的平台使用HTTP库。请共享您的云函数代码。另外,您得到的错误是什么?“它不起作用”信息不足。请编辑问题以显示后端代码,并解释调试请求所做的工作。包括日志、错误和预期输出。我已经更新了问题。您可以分享您的云功能代码吗。另外,您得到的错误是什么?“它不起作用”信息不足。请编辑问题以显示后端代码,并解释调试请求所做的工作。包括日志、错误和预期输出。我已更新了问题。