Crear tema usando la API de Discourse

Hola
Necesito tu ayuda por favor.
Estoy intentando crear un tema usando la API de Discourse pero falla cada vez que lo intento. Este es mi código:

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

No sé qué está mal, ¿puedes ayudarme por favor?

Gracias

No puedes incluir la clave de API en la URL (expone tu clave a cualquiera que pueda ver tu tráfico web). La clave debe pasarse en las cabeceras.

Consulta Grant a custom badge through the API para ver un ejemplo.

2 Me gusta

Hola @pfaffman
Gracias por tu ayuda. Intenté según el ejemplo pero hay un error:

401 Authorization Required

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

Seguramente cometí un error pero no sé cuál. ¿Puedes ayudarme por favor?

Gracias

Gracias por el código. Es difícil depurarlo completamente sin ver todo el código. Recomendaría consultar la API fuera del script. Por ejemplo, podrías usar curl

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

Si no te sientes cómodo con la línea de comandos o usando curl, te recomendaría usar Postman para depurar el problema con la API. Postman es esencial para mí como desarrollador cuando pruebo o desarrollo APIs.

Aquí tienes un espacio de trabajo de Postman con rutas de Discourse ya configuradas. Simplemente configura tu clave API y nombre de usuario.
Documentación de la API de Discourse Postman API Network

3 Me gusta