Usando external_id via API

Olá,

Gostaria de criar e recuperar um usuário via API usando um external_id. O external_id seria um inteiro que referencia um ID em nosso banco de dados interno. Isso não está relacionado ao SSO.

Estou seguindo a documentação, mas não consigo fazer funcionar. Consigo criar o usuário, mas não consigo recuperá-lo por external_id. A API de Criação de Usuário apenas mostra a solicitação para ter um objeto external_ids, mas sem mais informações sobre o conteúdo do objeto. Pesquisei na Comunidade e encontrei apenas este tópico, mas não foi muito útil.

Estou tentando recuperar o usuário usando a seguinte solicitação GET:

https://our_domain.discourse.group/u/by-external/7000.json

mas ele retorna um 404 e a seguinte resposta:

{
    "errors": [
        "The requested URL or resource could not be found."
    ],
    "error_type": "not_found"
}

A seguir, exemplos de algumas das solicitações de Criação de Usuário que tentei. Os usuários são criados com sucesso, apenas não consigo recuperá-los por external_id. (Observação: existe também uma maneira de visualizar o external_id de um usuário?):

{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": 7000
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_id": "7000"
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": {
        "external_id": 7000
    }
}
{
    "name": "John",
    "username": "Doe",
    "email": "john.doe@example.com",
    "password": "Z44Di3AeD93KoRUyxpyE",
    "active": true,
    "approved": true,
    "external_ids": [
        7000
    ]
}

O DiscourseConnect está ativado no seu site? Se não estiver, você precisa encontrar o nome do provedor do seu autenticador e usá-lo na solicitação. Alguns detalhes sobre isso estão aqui: Finding a user by their identity provider 'external ID'.

Obrigado pela sua resposta.

Acho que isso significa que não podemos usar o external_id, porque não queremos habilitar o DiscourseConnect. Não queremos substituir a autenticação do Discourse.

Provavelmente teremos que criar o usuário via API, depois armazenar o user.id do Discourse em nosso sistema e referenciá-los dessa forma.

1 curtida