actions-on-google - 请求同步始终返回 404:“错误:未找到请求的实体。”
问题描述
我很难实现 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"
}
我不知道在哪里可以找到这个问题。任何指针都会有所帮助。谢谢
解决方案
终于找到了答案。
离我上面发的那个不远了。虽然我的问题是,当我生成API密钥时,google home cloud console默认打开了错误的项目。我一直有错误的 API 密钥。
推荐阅读
- reactjs - 如何使用反应虚拟化创建包含大量数据并支持扩展行和固定列的复杂表?
- ios - 一个 Xcode 文件中的多个主故事板
- asp.net-mvc - 使用 POSTMAN 对 OPENID 服务器进行身份验证
- php - 如何通过 Stripe PHP 和 webhook 使用 good 事件,比较收到的付款数量并取消订阅
- reporting-services - textbox4 的值表达式直接引用字段
- node.js - 猫鼬(检查并保存如果新)
- java - 如何知道 JVM 因 Segfault 而崩溃的原因?
- asp.net-mvc - '值不能为空。参数名称:ViewStart.cshtml 上的 virtualPath'
- c# - Win2D API 随机失败,并出现错误“必须从同一工厂实例创建一起使用的对象”。
- android - 在 Android 屏幕录制中 - 如何获取每一帧?