Crea un argomento usando l'API di Discourse

Ciao
Ho bisogno del tuo aiuto per favore.
Sto cercando di creare un argomento utilizzando l’API di Discourse ma fallisce ogni volta che ci provo. Questo è il mio codice:

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

Non so cosa c’è che non va, puoi aiutarmi per favore?

Grazie

Non puoi includere la chiave API nell’URL (espone la tua chiave a chiunque possa vedere il tuo traffico web). La chiave deve essere passata nelle intestazioni.

Vedi Grant a custom badge through the API per un esempio.

2 Mi Piace

Ciao @pfaffman
Grazie per il tuo aiuto. Ho provato secondo l’esempio ma c’è un errore:

401 Authorization Required

Il mio 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 );

Ho sicuramente fatto un errore ma non so quale. Puoi aiutarmi per favore?

Grazie

Grazie per il codice. È difficile eseguirne il debug completo senza vedere tutto il codice. Ti consiglio di interrogare l’API al di fuori dello script stesso. Ad esempio, potresti usare curl

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

Se non ti senti a tuo agio con la riga di comando o con l’uso di curl, ti consiglio di utilizzare Postman per eseguire il debug del problema con l’API. Postman è essenziale per me come sviluppatore quando testo o creo API.

Ecco uno spazio di lavoro Postman con i percorsi di Discourse già configurati. Basta configurare la tua chiave API e il tuo nome utente.
Discourse API Documentation Postman API Network

3 Mi Piace