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.

Hat jemand anderes aktuell das gleiche Problem? Ich versuche seit zwei Tagen, die API zu nutzen, bekomme aber jedes Mal ähnliche Fehlermeldungen. Ich bin mir nicht sicher, ob ich einen Schritt übersehen habe oder ob sich etwas geändert hat.

Ich habe einen neuen API-Schlüssel für den Benutzer system erstellt. Außerdem habe ich versucht, einen API-Schlüssel für alle Benutzer zu erstellen und dann mein Admin-Konto zu verwenden.

Bei Verwendung des Ruby-Gems discourse_api:

DiscourseApi::UnauthenticatedError ({"errors"=>["You are not permitted to view the requested resource. The API username or key is invalid."], "error_type"=>"invalid_access"})

Ich habe es auch mit diesem Code aus einem anderen Beitrag versucht:

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

send_request # 400

Ich habe auch versucht, die API zu nutzen, indem ich api_username und api_key zusammen mit einer Rohanfrage in die Formulardaten eingefügt habe, bekomme aber einen 404-Fehler.

Ich versuche, ein Skript zu schreiben, das eine Liste von E-Mail-Adressen einliest, die Benutzernamen daraus ermittelt und diese dann von allen Discourse-E-Mails abmeldet.

Bezüglich des Fehlers, den Sie mit dem rohen Ruby-Code erhalten, liegt das Problem daran, dass Api-Key und Api-Username in den Anforderungs-Headern gesetzt werden müssen. Die API-Feldnamen müssen ebenfalls Bindestriche (-) anstelle von Unterstrichen (_) verwenden. Schauen Sie sich den Abschnitt „Authentifizierung

Danke, das funktioniert. Ich habe mich an den ersten paar Beiträgen hier orientiert, die möglicherweise aktualisiert werden müssen:

Danke für den Hinweis. Ich habe den Eröffnungspost aktualisiert und die ältesten Beiträge aus dem Thema gelöscht.