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.

Alguém mais está enfrentando esse problema no momento? Tenho tentado usar a API há dois dias, mas sempre recebo erros semelhantes. Não tenho certeza se estou pulando alguma etapa ou se algo mudou.

Criei uma nova chave de API para o usuário system. Também tentei criar uma chave de API para todos os usuários e, em seguida, usar minha conta de administrador.

Usando a gem Ruby discourse_api:

DiscourseApi::UnauthenticatedError ({"errors"=>["Você não tem permissão para visualizar o recurso solicitado. O nome de usuário ou a chave da API são inválidos."], "error_type"=>"invalid_access"})

Também tentei com este código de outro post:

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 "Sucesso!"
  else
    puts "Erro"
    puts response.code
  end
end

send_request # 400

Também tentei usar a API inserindo o api_username e o api_key nos dados do formulário junto com uma solicitação bruta, mas recebo um erro 404.

Estou tentando escrever um script que lê uma lista de endereços de e-mail, obtém os nomes de usuário e, em seguida, os cancela de todos os e-mails do Discourse.

Para o erro que você está recebendo com o código Ruby puro, o problema é que Api-Key e Api-Username precisam ser definidos nos cabeçalhos da solicitação. Os nomes dos campos da API também precisam usar hífens (-) em vez de sublinhados (_). Consulte a seção de Autenticação no topo de https://docs.discourse.org/ para detalhes sobre como autenticar a solicitação.

Não tenho certeza do que estaria causando o erro ao fazer a chamada com a gem Discourse API. A causa mais provável do problema é que você não está usando as credenciais de API corretas. Certifique-se de estar usando uma chave de API cujo Nível de Usuário esteja definido como Todos os Usuários:

Se isso não resolver o problema para você, poste aqui a solicitação que você está tentando fazer e eu darei uma olhada nela.

Obrigado, isso funciona. Eu estava seguindo os primeiros posts aqui, que podem precisar de atualização:

Obrigado por apontar isso. Atualizei o OP e excluí os posts mais antigos do tópico.