alexcomp
(Alex comp)
Novembro 2, 2022, 8:26am
1
Olá
Preciso da sua ajuda, por favor.
Estou tentando criar um tópico usando a API do Discourse, mas falha toda vez que tento. Este é o meu 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
Não sei o que está errado, você pode me ajudar, por favor?
Obrigado
pfaffman
(Jay Pfaffman)
Novembro 2, 2022, 10:45am
2
Você não pode incluir a chave da API na URL (isso expõe sua chave para qualquer pessoa que possa ver seu tráfego da web). A chave deve ser passada nos cabeçalhos.
Veja Grant a custom badge through the API como exemplo.
2 curtidas
alexcomp
(Alex comp)
Novembro 2, 2022, 11:16pm
3
Olá @pfaffman
Obrigado pela sua ajuda. Tentei seguir o exemplo, mas há um erro:
401 Authorization Required
Meu 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 );
Certamente cometi um erro, mas não sei qual. Você pode me ajudar, por favor?
Obrigado
Obrigado pelo código. É difícil depurá-lo completamente sem ver todo o código. Eu recomendaria consultar a API fora do próprio script. Por exemplo, você pode usar o curl
curl -X GET "https://mydiscourse.com/posts.json" \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: michael"
Se você não se sentir confortável com a linha de comando ou usando o curl, eu recomendaria usar o Postman para depurar o problema com a API. O Postman é essencial para mim como desenvolvedor ao testar ou construir APIs.
Aqui está um espaço de trabalho do Postman com rotas do Discourse já configuradas. Basta configurar sua chave de API e nome de usuário.
Documentação da API do Discourse Postman API Network
3 curtidas