gpt4 book ai didi

ios - 如何从 Firebase httpscallable().call() 中的后端接收 promise ?

转载 作者:搜寻专家 更新时间:2023-11-01 06:56:02 25 4
gpt4 key购买 nike

我一直在玩 stripe,想学习如何通过以下方式获取临时 key :

后端:

//Stripe API requirement for payment
exports.stripeEphemeralKey = functions.https.onCall((data, context) => {
const uid = context.auth.uid;

//Get values
admin.database().ref().child("users").child(uid)
.on("value", (snapshot) =>{
//Get user data
let user = snapshot.val()

//Log data
console.log("Create ephemeral key for:")
console.log(user)

//Create ephemeral key
stripe.ephemeralKeys.create(
{customer: user.customerid },
{stripe_version: '2018-11-08'}
)
.then((key) => {
console.log(key)
console.log("Succesful path. Ephemeral created.")
return "Testing"
})
.catch((err) => {
console.log("Unsuccesful path. Ephemeral not created.")
console.log(err)
return {
valid: false,
data: "Error creating Stripe key"
}
})
})
})

客户端:

  functions.httpsCallable("stripeEphemeralKey").call(["text": "Testing"]) { (result, error) in
print(result?.data)
}

我已经通过用简单的“测试”字符串替换 stripeEphemeralKey 的主体来测试此代码,并且返回正常。但是通过上面的代码,我只得到了 Optional() 。

为了测试,我添加了很多控制台日志。 Firebase 日志显示执行路径到达“成功路径。临时创建。”日志,而且我实际上可以看到我从 strip 返回的临时 key 。

那么,使用 onCall Firebase 函数在 Swift for iOS 中获取临时 key 的正确正确方法是什么?

后端做了它应该做的,但我似乎无法得到答案。

谢谢。

最佳答案

后端实际上并没有做它应该做的事情。你在这里至少做错了两件事。

首先,您的可调用函数需要返回一个 promise ,该 promise 以您要发送给客户端的值进行解析。现在,您的函数回调根本没有返回任何东西,这意味着客户端不会收到任何东西。您在 promise 处理程序中有返回值,但您需要一个顶级 return 语句。

其次,您正在使用 on() 从实时数据库中读取数据,实时数据库附加了一个持续存在的监听器,直到它被删除。这几乎肯定不是您想要在 Cloud Function 中执行的操作。相反,使用 once() 获取您要读取的数据的单个快照,并据此采取行动。

关于ios - 如何从 Firebase httpscallable().call() 中的后端接收 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com