我正在使用带有使用服务帐户生成的 jwt 的 http post 报告设备的状态。下面是 jwt 的有效载荷
{
"iss": "<service-account-email>",
"scope": "https://www.googleapis.com/auth/homegraph",
"aud": "https://accounts.google.com/o/oauth2/token",
"iat": <current-time>,
"exp": <current-time-plus-one-hour>
}
在此之后,我使用 python 库 google.auth.crypt.RSASigner.from_service_account_file(path) 使用我的服务帐户的私钥签署 jwt 并生成 jwt 令牌。我进一步使用此令牌从https://accounts.google.com/o/oauth/token获取访问令牌,这也是成功的。获得访问令牌后,我向 https://homegraph.googleapis.com/v1/devices:reportStateAndNotification?key=api_key发出发布请求
带标题
{"Authorization": "Bearer <token>", "X-GFE-SSL": "yes", "Content-Type": "application/json"}
和json数据
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agent_user_id": "1234", "payload": { "devices": { "states": { "1458765": { "on": true }, "4578964": { "on": true, "isLocked": true } } } } }
但这给了我
{'error': {'code': 403, 'message': 'The request is missing a valid API key.', 'status': 'PERMISSION_DENIED'}}
我按照 https://developers.google.com/actions/smarthome/report-state 中的步骤操作我做错了什么吗?还是我错过了任何步骤?
更新:我将 api 密钥添加到 uri 现在它给了我另一个错误响应
{'error': {'code': 403, 'message': 'The caller does not have permission', 'status': 'PERMISSION_DENIED'}}
我该如何解决这个问题?