Tengo una aplicación Xcode (escrita en Swift) que llama a una función python HTTP que se implementa en Firebase. Debería recibir una respuesta a cambio, pero por alguna razón, siempre regresa cuando los datos son nulos.
// swift function in xcode Functions.functions().httpsCallable("python_callable").call(["ID": ID, "time": String(currentTime)]) { (result, error) in if error != nil { //does not enter this return } else { guard let data = result?.data as? Data else {return} print(data) } }La siguiente es una función de la nube de Google que está escrita en python. De acuerdo con la documentación de Google Cloud , la función Firebase usa Flask para trabajar con solicitudes HTTP.
#deployed python Firestore function import Flask def python_callable(request): ** processes firestore data ** result = {"text":"example", "score": 100} return jsonify(data=result) Sé que se está invocando la función python_callable y que está recibiendo la solicitud; sin embargo, parece que no importa lo que haga, no puedo obtener la función Swift para obtener la respuesta. Siempre recibe nulo. ¿Hay un formato de respuesta específico que httpsCallable espera/se usa jsonify incorrectamente?
Las funciones "a las que se puede llamar" solo se admiten en Cloud Functions mediante el SDK de Firebase para node. No funcionarán para Python, a menos que implemente el protocolo invocable en la función misma. Si desea invocar una función HTTP normal que escribió en python, no podrá invocarla mediante el SDK de Firebase en el cliente.
Si desea intentar implementar el protocolo en el lado del servidor, la documentación sobre cómo funcionan los callables está aquí: https://firebase.google.com/docs/functions/callable-reference