Redefinir avatar no SSO sincronizado

Estou procurando redefinir o avatar ao usar o sync_sso (voltando a usar o letter_avatar_proxy). Atualmente, estou passando avatar_force_update=true e nenhum valor para avatar_url. Devo passar um valor explícito (null?) para avatar_url? Obrigado antecipadamente.

Ao analisar o código SSO do Discourse, não acho que será possível redefinir o avatar de um usuário para um avatar de letra chamando o sync_sso. O que o código faz é tentar baixar o avatar a partir da URL passada no parâmetro avatar_url. Se esse parâmetro for omitido, definido como null ou uma string vazia, nenhuma alteração será feita no avatar do usuário.

Como posso solicitar que a API faça tal coisa? Tentei implementar uma solução alternativa, mas não está funcionando muito bem.

Uma boa abordagem para descobrir qual chamada de API fazer para executar uma ação é realizar a ação pela interface do usuário do Discourse enquanto observa a aba de rede do seu inspetor de navegador para encontrar detalhes sobre a solicitação que está sendo feita. Consulte Como fazer engenharia reversa da API do Discourse para detalhes sobre essa abordagem.

Os avatares dos usuários podem ser atualizados para o avatar do sistema fazendo uma solicitação PUT à API em:

http://forum.exemplo.com/u/<nome_de_usuário_discourse>/preferences/avatar/pick

Defina type=system nos dados do formulário da solicitação. Você precisará substituir a URL do seu fórum e o nome de usuário do Discourse que deseja atualizar na URL.

Aqui está um exemplo de solicitação curl do meu site local. Defini $api_key como minha Chave de API de Todos os Usuários:

curl -X PUT "http://localhost:3000/u/scossar/preferences/avatar/pick" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-H "Content-Type: multipart/form-data;" \
-F "type=system"

Uma coisa a observar é que essa solicitação falhará se você tiver habilitado a configuração do site sso overrides avatar.

Estranhamente, essa é a solução alternativa que tentei, mas observei resultados inconsistentes. Vou testá-la um pouco mais e retornar com um relatório.