我很难实现 requestSync。它总是返回
"error": {
"code": 404,
"message": "Requested entity was not found.",
"status": "NOT_FOUND"
}
我使用 Node.js/Express 作为后端。与 Google Home 应用程序的链接/取消链接以及我的操作也有效。确实是 requestSync 部分失败了。
我找到的最接近的票是这张,虽然不完全相同 。
我尝试过的事情
agentUserId 是一个字符串,但如果我传递一个数字,它会返回 400,并显示消息“'agent_user_id' 的值无效”。
尝试发送 agent_user_id 而不是 agentUserId,这将返回 404,与我发送 agentUserId 时相同的错误
- 尝试删除正文的“async:true”部分。没有注意到有什么不同。
- 在同步期间,对 agentUserId 的值进行硬编码,以消除我发送错误的可能性。我在 requestSync 期间使用了相同的 agentUserId,但失败了。
- 尝试在 google home 应用中多次链接/取消链接
- 另一个需要注意的有趣的事情:当从谷歌控制台上的操作中打开“测试套件”时,我输入了相同的 agentUserId + 服务帐户密钥,它很好地注册了它:我能够看到我的设备正确列出。这让我相信我的 agentUserId 是正确的(这可能是一个错误的假设)
- 我 100% 确定 HomeGraph 已启用,因为我可以在控制台的 HomeGraph API 部分的“概述”部分中看到图表上的数据。
这就是 curl 的样子(与示例相同)
curl -i -s -X POST -H "Content-Type: application/json" -d "{agent_us
er_id: \"1\"}" "https://homegraph.googleapis.com/v1/devices:requestSyn
c?key=API_KEY"
(在这种情况下,我的 agentUserId 为 1)
这就是它在代码中的样子:
const res = await fetch(
`https://homegraph.googleapis.com/v1/devices:requestSync?key=${config.googleApiKey}`,
{
method: 'POST',
body: JSON.stringify({
agentUserId: String(userId),
async: true,
}),
headers: { 'Content-Type': 'application/json' },
},
);
不管我做什么,结果总是:
"error": {
"code": 404,
"message": "Requested entity was not found.",
"status": "NOT_FOUND"
}
我不知道在哪里可以找到这个问题。任何指针都会有所帮助。谢谢