Olá a todos. Estou usando SSO no meu fórum e os avatares são controlados pelo meu site.
Até alguns dias atrás, o upload/atualização de avatares do site para o Discourse, via API, estava funcionando. Agora recebo um erro 422 - Unprocessable Entity.
Tentei depurar o problema, fiz alguns testes com o Postman e estou tendo os mesmos problemas. A solicitação que estou fazendo está abaixo (com URL, nome de usuário e api_key removidos, é claro).
Algum de vocês sabe se há algum problema com esta parte do Discourse?
Eu acho que isso interferiria com o upload real, não com a atribuição do avatar ao usuário.
Consigo fazer o upload do arquivo sem problemas. Quando faço a chamada para a API para indicar qual arquivo usar como avatar, é aí que recebo o erro e isso começou do nada.
Estou tentando minha sorte e impulsionando isto mais uma vez. É estranho que ninguém tenha encontrado isto. Tenho certeza de que não é um problema de codificação, pois tem funcionado por mais de dois anos.
Ainda não tenho uma resposta, mas queria apenas informar que isso está na minha lista para investigar. Tenho uma configuração de SSO que posso testar localmente, para que nossas configurações coincidam. Parece que devemos respeitar essa configuração do site, o que pode ser uma mudança que alguém fez recentemente, mas talvez possamos adicionar um substituto de API.
Eu pensei sobre isso também, mas não funcionou. Além disso, esse problema apareceu do nada. Ninguém mudou nada (eu sou o único administrador, então não há chance de alguém ter alterado alguma configuração), nenhuma alteração de código no site principal, nada.
Pode me informar o que você definiu para allow_uploaded_avatars? Não é mais apenas uma configuração verdadeiro/falso, mas está definida para um certo nível de confiança. E você pode me informar qual é o nível de confiança do usuário que está tentando alterar seu avatar? E vocês estão na versão mais recente do Discourse?
Aqui está o código para escolher um avatar e as linhas que retornam respostas 422.
Não que não possa ser outra coisa no fundo do código, mas provavelmente é um destes 3. O primeiro tem a ver com discourse_connect_overrides_avatar e aparentemente descartamos esse. Não acho que seja o segundo porque seu comando curl parece correto e inclui o tipo “uploaded”. Possivelmente ainda pode ser o terceiro com a configuração allow_uploaded_avatars, que é por isso que eu gostaria de saber o que você definiu para essa configuração.
Eu o tinha desativado até que este problema começasse. Então, mudei para 0:novo usuário.
Mas desativá-lo sempre funcionou para mim. Eu não quero que os usuários façam upload do fórum, mas sim do site que usa SSO. Ainda assim, mudar para 0:novo usuário não muda nada. Eu ainda recebo o mesmo erro
Não consigo encontrar nenhuma atualização recente que tenha impedido o funcionamento de avatares via API quando todas as configurações do site os bloqueiam. De qualquer forma, se você estiver usando SSO (ou DiscourseConnect), deverá usar a rota da API /admin/users/sync_sso para atualizar o avatar dos usuários, e não a rota da interface do usuário (/u/username/preferences/avatar/pick).
Olá Blake. Muito obrigado pela sua ajuda contínua neste assunto.
Não consigo encontrar nenhuma informação sobre esse endpoint na documentação da API. É algo novo?
Além disso, como indiquei antes, a atualização do avatar estava funcionando bem por vários meses usando o endpoint /u/username/preferences/avatar/pick, o que é realmente estranho. Simplesmente parou de funcionar. Isso realmente me intriga.