Firebase Cloud Function获取当前时间出现INVALID_ARGUMENT错误如何解决?
问题原因
你遇到的报错是因为 onCall 类型的Firebase Cloud Function 不是普通的HTTP接口,它基于Firebase自研的RPC协议运行,直接在浏览器通过GET请求访问时,请求格式不符合协议要求,就会返回INVALID_ARGUMENT错误。
你需要补充的操作
- 如果你仅需要临时在浏览器测试接口,可以按如下要求构造请求:
- 请求方法必须为POST,不能使用GET
- 请求头添加
Content-Type: application/json - 请求体必须传入带
data字段的JSON结构,即使你没有自定义参数,也要传空对象:{"data":{}}
- 如果你要在Android端调用,不要手动拼接HTTP请求,直接使用Firebase Android SDK的Cloud Functions模块调用即可,SDK会自动处理协议格式,示例代码如下:
// 初始化Cloud Functions实例 val functions = FirebaseFunctions.getInstance() // 调用getTime接口 functions.getHttpsCallable("getTime") .call() .addOnSuccessListener { result -> val timestamp = result.data as Long // 后续处理时间戳逻辑 } .addOnFailureListener { exception -> // 异常处理逻辑 } - 额外需要核对的配置项:
- 云函数已经成功部署,Firebase控制台的Functions页面可以看到
getTime接口 - Android端使用的
google-services.json文件和部署云函数的Firebase项目完全匹配 - 如果是国内使用,需要确认网络可以正常访问Firebase服务,或者将云函数部署到亚洲区域减少访问异常
- 云函数已经成功部署,Firebase控制台的Functions页面可以看到
内容的提问来源于stack exchange,提问作者Darkzide Demigod
相关产品推荐
相关产品推荐

