【问题标题】:Google HomeGraph API: PERMISSION_DENIED errorGoogle HomeGraph API:PERMISSION_DENIED 错误
【发布时间】:2019-03-25 01:11:22
【问题描述】:

我正在使用 Actions On Google 制作智能家居应用。我目前有一个 Firebase 云函数,它通过 Request Sync 请求调用 HomeGraph API。

函数内容如下:

const {smarthome} = require('actions-on-google');

const app = smarthome({
  key: "(My Key)"
});

//Assume UID is the id of the user that we are requesting a sync for
app.requestSync(uid).then((res) => {
  return;
}, (e) => {
  console.error(e);
});

在此函数的日志中,我收到错误消息:

{ "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }

此错误似乎是标准的 Google API 权限被拒绝错误响应,但它何时会在 Request Sync HomeGraph API 调用中发生?

【问题讨论】:

    标签: google-api actions-on-google google-smart-home


    【解决方案1】:

    这个问题困扰了我很长时间,我决定在这里发布问题和答案,这样其他人就不必浪费时间进行故障排除了。

    发生此错误的可能原因有两个。

    1. 最合乎逻辑的原因:确保在传递给 smarthome 构造函数的数据中提供有效的 API 密钥。问题中的示例是正确的(当然,将(my key)替换为您在控制台中制作的密钥。
    2. 这是我遇到错误的原因:确保您传递给 requestSync() 的 uid 是有效的用户 ID。我的 SYNC 代码存在缺陷,因此没有创建用户。我在诊断这个问题上费了很大劲,因为错误消息没有意义。

    希望这对遇到此问题的人有所帮助。

    【讨论】:

    • 根据阅读问题,我认为错误更多是前者,即您无权调用API。如果用户不存在,我认为您会收到 404 错误。
    • @NickFelker 这就是我最初的想法,但我确保我的密钥有效并且启用了 HomeGraph API。该错误消息对于案例 2 并没有真正意义,但这就是为我解决的问题。
    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多