Temos um aplicativo de fórum Discourse conectado ao nosso app via SSO. Os avatares dos usuários são atualizados diretamente por meio dele. No entanto, nossas fotos são moderadas, então precisamos limpar os avatares dos usuários no lado do aplicativo Discourse.
Isso pode ser feito de alguma forma por meio da API REST ou por melhorias no mecanismo SSO? Não consegui encontrar essa informação na documentação.
Você deve ser capaz de chamar a rota sync_sso para re-sincronizar o avatar do usuário, mas também pode fazer uma solicitação PUT para http://localhost:3000/u/<username>/preferences/avatar/pick com um upload_id vazio
Aqui está um código Ruby que você pode usar, que utiliza o gem discourse_api, para que você possa usá-lo como referência. O endpoint sync_sso é um pouco diferente dos outros endpoints, porque você precisa enviar um payload assinado.
Estou correto ao afirmar que podemos enviar POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=... ??
Os parâmetros ‘sso’ e ‘sig’ são semelhantes aos do fluxo de autorização SSO?
Tentei realizar a solicitação conforme explicado acima POST /admin/users/sync_sso?api_key=...&api_username=...&sso=...&sig=... e ela retornou 200 com meu usuário, mas o avatar do usuário não foi atualizado e não houve eventos de log. O que estou fazendo de errado?
Você deve incluir o api_key e o api_username no cabeçalho HTTP, pois usá-los nos parâmetros de consulta está obsoleto.
Acho que deve haver alguma proteção no código que impede a exclusão acidental de um avatar se o campo for omitido ou estiver vazio. Provavelmente, você precisará fornecer uma URL para um avatar padrão para substituir o avatar existente.
Substituí as credenciais da API por cabeçalhos.
A sincronização SSO não atualizou o avatar do usuário com o fornecido. Embora o trabalho Sidekiq nessa chamada tenha sido concluído e não houvesse logs de erro ou aviso.