Request Sync always returns 404 : “Error: Requested entity was not found.”

半世苍凉 提交于 2021-02-10 06:15:21

问题


I'm having a hard time implementing requestSync. It always returns

  "error": {
    "code": 404,
    "message": "Requested entity was not found.",
    "status": "NOT_FOUND"
  }

I use Node.js/Express for the backend. The linking/unlinking with the Google Home app work and my actions work as well. It's really the requestSync part that fails.

The closest ticket I've found, though not exactly the same, is this one.

Things I've tried

  • agentUserId is a string, but if I pass it a number it returns a 400 with the message "Invalid value at 'agent_user_id'".

  • tried sending agent_user_id instead of agentUserId, this returns a 404 the same error as when I send a agentUserId

  • tried removing the "async:true" part of the body. did not notice a difference.
  • during SYNC, hardcoded the value of the agentUserId to eliminate possibility that I'm sending the wrong one. I use that same agentUserId during requestSync and this fails.
  • tried linking/unlinking multiple times in the google home app
  • another interesting thing to note : when opening up the "Test Suite" from the actions on google console, I put in that same agentUserId + service account key, and it registers it well : I'm able to see my devices listed correctly. Which leads me to believe that my agentUserId is correct (this may be a false assumption)
  • I'm 100% sure HomeGraph is enabled as I can see data on the charts in the "Overview" section of the HomeGraph API part of the console.

This is what the curl looks like (same as from the example)

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"

(my agentUserId is 1 in this case)

And this is what it looks like in code :

    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' },
      },
    );

Regardless of what I do, the result is always :

  "error": {
    "code": 404,
    "message": "Requested entity was not found.",
    "status": "NOT_FOUND"
  }

I don't know where else to look to identify this problem. Any pointers would help. Thank you


回答1:


Finally found the answer.

It wasn't too far from the one I had posted above. Although my problem is that when I generated an API key, the google home cloud console opened the wrong project by default. I had the wrong API key all along.



来源:https://stackoverflow.com/questions/57401899/request-sync-always-returns-404-error-requested-entity-was-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!