API Error: You are not permitted to view the requested resource

I am receiving the following error:

DiscourseApi::UnauthenticatedError: 
{"errors"=>["You are not permitted to view the requested resource."], "error_type"=>"invalid_access"}

when I make the ruby API call ‘category_latest_topics’

response = client.category_latest_topics("<some_category>") 

This is due to the category permissions (the category is not public). I tried to authenticate by using

client.api_username = "system"  

and making sure “system” is a member of the group that has permissions to the category but still no luck! Any suggestions or workarounds?

No response so far. Am I posting this in the right forum?

Try using a different user, other than System. Issue an API key for a different user. You will need to experiment.

No luck. Tried issuing API key for different users who have permission to the category but still no access.

Would be awesome if anyone else has suggestions for this?

How can I access a private category via the API. This should not be an issue for users/system with admin rights to the forum.

I’m having the same issue, can someone take a look into this?

Have you attempted to generate a key from your account? You are the admin who created the forum, yes? You say “users/system” so I am wondering if you tried your own account.

Yes i am the admin of my forum.

I have tried both my username and system with no luck. I can’t call client.category_latest_topics(<category_name>) even though the user has permissions to the category

I feel some other variable exists and is causing this error; one that cannot be seen due to the limited info provided.

Be sure to check these topics in regards to setting up and using the Discourse API, if you have not yet done so.

Appreciate your help. If you read my original post i am using the ruby api. I have also looked through the documentation before posting this topic.

If you could show me what variable i am missing or where to exactly to find out more i would appreciate it.

У кого-нибудь ещё возникает эта проблема прямо сейчас? Я уже два дня пытаюсь использовать API, но каждый раз получаю похожие ошибки. Не уверен, что я упускаю какой-то шаг или что-то изменилось.

Я создал новый API-ключ для пользователя system. Также пробовал создать API-ключ для всех пользователей, а затем использовать свою учётную запись администратора.

При использовании Ruby-библиотеки discourse_api:

DiscourseApi::UnauthenticatedError ({"errors"=>["Вы не имеете права просматривать запрошенный ресурс. Имя пользователя API или ключ недействительны."], "error_type"=>"invalid_access"})

Также пробовал этот код из другого поста:

require 'net/http'
require 'uri'

INSTANCE_URL = 'https://forum.example.com/admin/users/list/all.json?email=user@example.com'
API_USERNAME = 'system'
API_KEY = 'a_new_api_key_here'

def send_request
  url = URI.parse(INSTANCE_URL)
  request = Net::HTTP::Get.new(url.path)
  request.set_form_data({'api_username' => API_USERNAME, 'api_key' => API_KEY})
  http = Net::HTTP.new(url.host, url.port)
  response = http.request(request)

  if response.code == '200'
    puts "Успех!"
  else
    puts "Ошибка"
    puts response.code
  end
end

send_request # 400

Также пробовал использовать API, передавая api_username и api_key в данных формы вместе с необработанным запросом, но получаю ошибку 404.

Я пытаюсь написать скрипт, который читает список адресов электронной почты, получает имена пользователей, а затем отписывает их от всех рассылок Discourse.

Для ошибки, с которой вы столкнулись при работе с чистым Ruby-кодом, проблема заключается в том, что заголовки запроса должны содержать Api-Key и Api-Username. Имена полей API также должны использовать дефисы (-) вместо подчёркиваний (_). Подробную информацию об аутентификации запроса см. в разделе «Authentication» в верхней части страницы https://docs.discourse.org/.

Не уверен, что вызывает ошибку при вызове через gem Discourse API. Наиболее вероятная причина — использование неверных учётных данных API. Убедитесь, что вы используете ключ API, у которого уровень пользователя установлен как «All Users»:

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

Спасибо, это работает. Я следовал первым нескольким постам здесь, которые, возможно, требуют обновления:

Спасибо, что обратили на это внимание. Я обновил первое сообщение и удалил самые старые посты из темы.