Google HomeGraph API: ошибка PERMISSION_DENIED

Я делаю приложение для умного дома, используя Actions On Google. В настоящее время у меня есть облачная функция Firebase, которая вызывает API HomeGraph с запросом на синхронизацию запроса.

Вот содержимое функции:

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?


person yummypasta    schedule 25.03.2019    source источник


Ответы (1)


У меня была эта проблема в течение довольно долгого времени, и я решил опубликовать вопрос и ответ здесь, чтобы другим не пришлось тратить время на устранение неполадок.

Возможны две причины возникновения этой ошибки.

  1. Наиболее логичная причина: убедитесь, что вы указали действительный ключ API в данных, переданных конструктору умного дома. Пример в вопросе правильный (конечно, замените (my key) на ключ, который вы сделали в консоли.
  2. Это было причиной ошибки, с которой я столкнулся: убедитесь, что uid, который вы передаете requestSync(), является допустимым идентификатором пользователя. В моем коде SYNC была ошибка, поэтому пользователь не был создан. Я так много боролся с диагностикой этой проблемы, потому что сообщение об ошибке не имеет смысла.

Надеюсь, это поможет всем, у кого есть эта проблема.

person yummypasta    schedule 25.03.2019
comment
Основываясь на прочтении вопроса, я думаю, что ошибка больше относится к прежней, когда вам не было разрешено вызывать API. Если пользователь не существует, я думаю, вы получите ошибку 404. - person Nick Felker; 25.03.2019
comment
@NickFelker Сначала я так подумал, но убедился, что мой ключ действителен и API HomeGraph включен. Сообщение об ошибке на самом деле не имеет смысла для случая 2, но это исправило его для меня. - person yummypasta; 25.03.2019