Estou tentando escrever uma função para importar todos os usuários existentes do nosso site externo (terceiro, estou apenas fazendo o middleware) e estou tentando usar a função createUser. Funciona bem, exceto pelo parâmetro external_ids. Não importa o que eu envie (tentei arrays, objetos… o que você imaginar), o ID externo não é salvo, mas o usuário é criado. Sem erros.
Existe algum formato específico para o objeto external_ids?
Eu vi a solução sso_sync, mas prefiro não seguir por esse caminho, especialmente porque o parâmetro external_ids está incluído na API.
Já configurei o SSO e consegui redirecionar do site de terceiros para o Discourse, mas não me lembro de nenhum lugar para definir o provedor, exceto ao definir os segredos do provedor do Discourse Connect. Há algo que estou perdendo?
Hmm, ok. Se você estiver usando o DiscourseConnect, pela leitura do código, parece que você não pode adicionar o ID externo ao criar. O código logo acima lida apenas com contas associadas, que são diferentes do SSO.
Você pode tentar fazer duas chamadas: a primeira chamada igual à que você tem agora, mas sem os IDs externos, e adicionar uma segunda chamada para updateUser, incluindo as informações do ID externo? Esperamos que isso funcione.
Obrigado pela ajuda, e sim, estou usando DiscourseConnect, que provavelmente é o motivo pelo qual isso não está funcionando. Acho que essa é a abordagem que terei que seguir. Ou então, terei que fazer uma segunda chamada que o login SSO autentique o usuário com o ID externo para que ele seja vinculado ao seu e-mail.
Edição: Acho que o updateUser também terá o mesmo problema, pois não tenho um provedor definido, então provavelmente o login SSO é a minha melhor aposta.
Para atualizar e encerrar este assunto, a única solução que funcionou foi executar sso_sync após criar um novo usuário, e mesmo isso não foi muito necessário porque, uma vez que o usuário tenta fazer o sso no discourse, a sincronização ocorrerá de qualquer maneira por e-mail, ao que parece.