Como lidar com o SSO do Discourse quando o site de autenticação permite que os usuários alterem e-mails?

Utilizamos um fluxo SSO do Discourse que implementamos com base neste guia: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Funcionou bem para nós. Mas agora queremos permitir que os usuários do nosso sistema alterem seu e-mail, e isso parece estar causando problemas.

Quando altero o e-mail do meu usuário no nosso sistema, o SSO para o Discurso deixa de funcionar.

Erro de Login

Há um problema com sua conta. Entre em contato com o administrador do site.

Acho que o Discourse recebe um payload com um e-mail e um nome de usuário que não correspondem e não sabe o que fazer.

Qual é a melhor maneira de lidar com isso?

A melhor ideia que tive é usar a API do Discourse para alterar o e-mail do usuário no Discourse para corresponder ao do nosso sistema antes de iniciar o SSO.

Mas não sei se isso é possível. Abaixo está minha tentativa falha.

Aqui está minha solicitação:

https://forum-stage.{domain}.com/users/{username}/preferences/email

Cabeçalhos:
Content-Type: application/x-www-form-urlencoded
Accept: application/json

Corpo (como x-www-form-urlencoded no Postman):
email: testemail@testdomain.com
api_key: 75a...77d
api_username: system

E aqui está a resposta que recebo:

{
    "errors": [
        "Você não tem permissão para visualizar o recurso solicitado."
    ],
    "error_type": "invalid_access"
}

I’m experiencing this too - did you ever figure out a way around this?

This should not be the case, we primarily key on the SSO id.

You can use the sync sso endpoint to sync the emails on Discourse side if you want to do so proactively but changing emails in your system should always work.

The one exception is

Discourse thinks SSO id is 5 email is bob@jane.com

You log in with SSO id of 6 email is bob@jane.com

This is not resolvable so you will need to manually intervene. (sync sso id 6 first)