Я сгенерировал API-ключ, выданный администратором, с областями write, read и read lists. Однако при попытке использовать этот ключ (добавив его в заголовок Api-Key) для доступа к эндпоинту {{localhost}}/posts.json я получаю следующую ошибку:
"errors": [
"У вас нет прав для просмотра запрошенного ресурса. Имя пользователя API или ключ недействительны."
],
"error_type": "invalid_access"
}
С другой стороны, генерация глобального ключа дает мне доступ к этому эндпоинту. Какая правильная (минимальная) область для чтения {{localhost}}/posts.json?
Я ещё не проверял это, но думаю, что то, что вы наблюдаете, — это ожидаемое поведение. Вы можете нажать на кнопку-якорь, отображаемую рядом с каждым разрешением API-ключа, чтобы увидеть, к каким путям это разрешение даёт доступ. Вы увидите, что разрешение read применяется только к маршрутам, начинающимся с /t. Разрешение read lists предоставляет доступ к спискам тем Discourse. Отдельного разрешения для доступа к /posts.json не существует, поэтому, похоже, вам придётся использовать глобальный ключ.
Интересно, имело бы смысл добавить /posts.json в разрешение read.
Привет, Саймон! Спасибо за ответ и объяснение. В моём случае мне нужно будет читать посты из /posts.json, но при этом я хочу быть как можно менее навязчивым и запросить только доступ только для чтения. Есть ли какое-то решение?
Если вы запрашиваете только публичные посты, вы, возможно, сможете сделать неаутентифицированный API-запрос к /posts.json. Если ваш сайт приватный или посты находятся в защищённых категориях, я думаю, что единственный способ получить эти посты в настоящее время — использовать глобальный API-ключ.