2

我很难实现 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"
  }

我不知道在哪里可以找到这个问题。任何指针都会有所帮助。谢谢

4

1 回答 1

1

终于找到了答案。

离我上面发的那个不远了。虽然我的问题是,当我生成API密钥时,google home cloud console默认打开了错误的项目。我一直有错误的 API 密钥。

于 2019-08-07T21:04:31.030 回答