Créer un sujet en utilisant l'API Discourse

Bonjour
J’ai besoin de votre aide s’il vous plaît.
J’essaie de créer un sujet en utilisant l’API Discourse mais cela échoue à chaque fois que j’essaie. Voici mon 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

Je ne sais pas ce qui ne va pas, pouvez-vous m’aider s’il vous plaît ?

Merci

Vous ne pouvez pas inclure la clé d’API dans l’URL (elle expose votre clé à quiconque peut voir votre trafic web). La clé doit être transmise dans les en-têtes.

Voir Grant a custom badge through the API pour un exemple.

2 « J'aime »

Bonjour @pfaffman
Merci pour votre aide. J’ai essayé selon l’exemple mais il y a une erreur :

401 Authorization Required

Mon script :

$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 );

J’ai certainement fait une erreur mais je ne sais pas laquelle. Pouvez-vous m’aider s’il vous plaît ?

Merci

Merci pour le code. Il est difficile de le déboguer entièrement sans voir tout le code. Je vous recommande d’interroger l’API en dehors du script lui-même. Par exemple, vous pourriez utiliser curl

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

Si vous n’êtes pas à l’aise avec la ligne de commande ou l’utilisation de curl, je vous recommande d’utiliser Postman pour déboguer le problème avec l’API. Postman est essentiel pour moi en tant que développeur lors du test ou de la création d’API.

Voici un espace de travail Postman avec les routes Discourse déjà configurées. Configurez simplement votre clé API et votre nom d’utilisateur.
Documentation API Discourse Postman API Network

3 « J'aime »