Thema erstellen mit Discourse API

Hallo
Ich brauche bitte Ihre Hilfe.
Ich versuche, ein Thema mit der Discourse API zu erstellen, aber es schlägt jedes Mal fehl, wenn ich es versuche. Das ist mein Code:

https://myDiscourse.com/posts.json?title=New+test+posted&raw=new+posted+text+to+test+creation+by+api&category=45&api_key=xxxxxxxxxxxxxxxxxxxxxxxx&api_username=admin

Ich weiß nicht, was falsch ist, können Sie mir bitte helfen?

Danke

Sie können den API-Schlüssel nicht in die URL aufnehmen (er legt Ihren Schlüssel offen, wenn jemand Ihren Webverkehr sehen kann). Der Schlüssel muss in den Headern übergeben werden.

Siehe Grant a custom badge through the API als Beispiel.

2 „Gefällt mir“

Hallo @pfaffman
Vielen Dank für deine Hilfe. Ich habe es nach dem Beispiel versucht, aber es gibt einen Fehler:

401 Authorization Required

Mein Skript:

$apikey = "xxxxxxxxxxxxxxxxxxxx";

	$username = "xxxxxxxxxxxxxxxxx";

	$title = "test";
	$raw = "message";
	$category = 9;

	$url = 'https://myDiscourse.com/posts.json';
	$post_fields = array(
		'title' => $title,
		'raw' => $raw,
		'category' => $category,
	);
	$headers = array("Content-Type: multipart/form-data;","Api-Key: $apikey","Api-Username: $username",);

	$ch = curl_init();
	curl_setopt( $ch, CURLOPT_URL, $url );
	curl_setopt( $ch, CURLOPT_POST, 1 );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $post_fields ) );
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

	$result = curl_exec( $ch );

	if ( curl_errno( $ch ) !== 0 ) {
		echo 'Error:' . curl_error($ch);
	}

	curl_close( $ch );

Ich habe sicherlich einen Fehler gemacht, aber ich weiß nicht, welchen. Kannst du mir bitte helfen?

Danke

Vielen Dank für den Code. Es ist schwierig, ihn vollständig zu debuggen, ohne den gesamten Code zu sehen. Ich würde empfehlen, die API außerhalb des Skripts abzufragen. Sie könnten zum Beispiel curl verwenden

curl -X GET "https://mydiscourse.com/posts.json" \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: michael"

Wenn Sie sich mit der Befehlszeile oder der Verwendung von curl nicht wohl fühlen, würde ich empfehlen, Postman zu verwenden, um das Problem mit der API zu debuggen. Postman ist für mich als Entwickler unerlässlich, wenn ich APIs teste oder erstelle.

Hier ist ein Postman-Workspace mit bereits eingerichteten Discourse-Routen. Konfigurieren Sie einfach Ihren API-Schlüssel und Benutzernamen.
Discourse API Documentation Postman API Network

3 „Gefällt mir“