0

我有一个连接到SIM800L gsm/gprs 模块的esp32板。我正在为这个项目使用TinyGSM库。不知何故,我无法通过 http 桥将数据成功发布到Google 云。以前我运行了文档中显示的关于如何使用 curl 执行此操作的示例,并且我成功了。

curl -X POST -H 'authorization: Bearer JWT' -H 'content-type: application/json' --data '{"state": {"binary_data": "DATA"}}' -H 'cache-control: no-cache' 'https://cloudiotdevice.googleapis.com/v1/projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{deviceid}:setState'

当我使用TinyGSMesp32生成假定的相同请求时,我总是从谷歌服务器获得相同的 http 响应:

“错误”:{“代码”:403,“消息”:“调用者没有权限”,“状态”:“PERMISSION_DENIED”}

一开始我以为是 JWT 不正确,但是故意改成错误的 JWT 时,错误信息变为:

"error": { "code": 401, "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/登录/web/devconsole-project。” ,“状态”:“未经身份验证”}

所以我想我可以排除可能的无效 JWT

我怀疑我的项目配置可能有问题,但如果是这种情况,我不明白为什么它总是适用于 curl 而不是 esp32。

4

0 回答 0