Não é possível adicionar usuário via API

Olá!

Estamos tentando adicionar um usuário via API com a seguinte solicitação:

POST https://discourse.example.de/users
{
    "name": "Bob Tester",
    "email": "example address",
    "password": "#######",
    "username": "testi",
    "active": true,
    "approved": false
}

Nossa chave de API e usuário estão definidos no cabeçalho da nossa solicitação.

Essa solicitação resulta na seguinte resposta:

Status: 200 OK
{
    "success": true,
    "active": false,
    "message": "<p>Você está quase lá! Enviamos um e-mail de ativação para <b>example address</b>. Por favor, siga as instruções no e-mail para ativar sua conta.</p><p>Se o e-mail não chegar, verifique sua pasta de spam.</p>"
}

Mas não há nenhum usuário adicionado no Discourse?

Na resposta de exemplo da documentação (Discourse API Docs), há um ID de usuário.

Alguém tem uma ideia de por que não recebemos um ID de usuário na resposta?

Essa mensagem na resposta:

é a mensagem do e-mail de confirmação:

o que significa que o usuário recebe um e-mail de confirmação. Assim que ele clicar no link, a conta será criada.

Você está usando a versão mais recente do Discourse? Se você passar "active": true, um e-mail de confirmação não deve ser enviado. Veja Creating user via API - #11 by blake.

2 curtidas

Olá!

Obrigado pela sua resposta, mas ela não resolveu meu problema.

No meu exemplo de solicitação, usei o parâmetro “active”: true, mas na resposta recebi “active”: false, então o usuário não pode ser ativado — talvez porque ele não tenha sido criado?

Independente disso:

Se eu não enviar o parâmetro “active”: true na minha solicitação, nenhum e-mail é enviado ao usuário.

Alguma ideia?

Obrigado!

Você pode nos informar qual versão do Discourse você está usando? Isso nos ajudará a verificar se conseguimos reproduzir o seu problema.

Claro - estamos usando a versão 2.6.0.beta5.
Não há nenhuma atualização disponível para nós.

1 curtida

Ótimo, obrigado. Só queria confirmar que você não estava usando uma versão antiga.

Tenho quase certeza de que suas credenciais não estão sendo realmente passadas corretamente ao fazer essa solicitação. Esse endpoint é um pouco especial, pois é usado em nosso formulário de cadastro e, na verdade, não exige credenciais de API para ser utilizado. A resposta que você está recebendo ocorre quando um usuário se cadastra, mas detectamos que não se trata de uma solicitação via API.

Você poderia tentar fazer outra solicitação de API que exija autenticação, como criar uma categoria, e ver se funciona? Você também pode verificar a página da API de administração e ver quando a chave foi usada pela última vez, para confirmar se ela está sendo utilizada corretamente na sua solicitação de criação de usuário.

Consegui replicar seu problema ao fazer uma solicitação JSON sem credenciais:

solicitação JSON sem credenciais

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -d "{\"name\": \"8525f374d470a2e3f22c\", \"active\": \"true\", \"username\": \"8525f374d470a2e3f22c\", \"email\": \"8525f374d470a2e3f22c@example.com\", \"password\": \"65d18e465472452771e02b3462260ea1\"}"

HTTP/1.1 200 OK

{"success":true,"active":false,"message":"\u003cp\u003eVocê está quase lá! Enviamos um e-mail de ativação para \u003cb\u003e8525f374d470a2e3f22c@example.com\u003c/b\u003e. Siga as instruções no e-mail para ativar sua conta.\u003c/p\u003e\u003cp\u003eSe não chegar, verifique sua pasta de spam.\u003c/p\u003e"}

vs

solicitação JSON com credenciais

curl -i -sS -X POST "http://localhost:3000/users.json" -H "Content-Type: application/json" -H "Api-Key: 079fb2bb12d3b436bb11bde8eb58aaa9a36560fa7d79b14b3087aa40b1ebc2c4" -H "Api-Username: blake.erickson" -d "{\"name\": \"da4be85b6046f9c9b9e1\", \"active\": \"true\", \"username\": \"da4be85b6046f9c9b9e1\", \"email\": \"da4be85b6046f9c9b9e1@example.com\", \"password\": \"65d6f0589c5f234de4ad31662b3a17a2\"}"

HTTP/1.1 200 OK

{"success":true,"active":true,"message":"Sua conta está ativada e pronta para uso.","user_id":29}

1 curtida

Funcionou! As credenciais não foram passadas corretamente.

Muito obrigado pela sua ajuda, excelente suporte! :slight_smile:

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.