Basicamente, estou tentando permitir que os usuários verifiquem que são os donos de algumas contas de redes sociais que não possuem OpenID ou OAuth (como uma conta do Riot, por exemplo). Qual seria a melhor abordagem para fazer isso? Seria possível fazer com que um usuário usasse o Discourse como provedor OAuth para um aplicativo externo que edita o banco de dados? Ainda não estou muito familiarizado com o Discourse, então estou tentando pensar na melhor maneira de criar algo assim.
Acredito que o @falco tenha experiência com a Riot?
Ah, esse é um problema interessante. Uma abordagem que experimentamos foi usar o Keybase para isso. Eles já possuem um sistema robusto de prova de identidade que funciona com muitas plataformas. Você pode ler sobre nossos experimentos em Discourse Keybase Proof. Não tenho certeza de como ficará agora que o Zoom o adquiriu.
Essa parte soa um pouco estranha. Como o Discourse, atuando como IdP para o Riot, ajudaria você a provar no Discourse que você possui uma conta existente do Riot/Matrix?
Você poderia explicar um pouco mais? Estava pesquisando sobre SSO do Matrix ontem e, finalmente, eles têm algo agora. Eles implementam tanto SAML quanto, na branch develop, OAuth2. O Discourse não consegue se comunicar como servidor em nenhum dos casos, apenas como cliente, então estava pensando em fazer o Discourse atuar como um servidor OAuth2 ou adicionar suporte ao protocolo SSO próprio do Discourse no Synapse. Não tenho certeza se isso atenderia às suas necessidades…
Existe alguma URL pública na Riot que o usuário possa controlar? Como, por exemplo, um Biografia publicamente acessível onde o usuário possa inserir um código? Nesse caso, um plugin do Discourse poderia gerar um código que o usuário inseriria em sua Bio e, ao fornecer seu nome de usuário da Riot, o sistema verificaria URL/<nome-de-usuário-riot>/bio em busca desse código?
Um sistema como esse permitiria um plugin de propósito bastante geral, que poderia ser configurado para vários sites de terceiros por meio de algumas configurações do sistema.
O padrão para o qual eu sou favorável à adoção é o “link bidirecional rel="me"”. Adicione um link dessa página para seu perfil no Discourse e um link do seu perfil no Discourse para essa página. Ambos os sistemas farão o rastreamento da outra URL, verão o rel=me e marcarão como
Verificado.
Casos especiais podem ser implementados para extrair o campo de biografia de plataformas que não implementam isso.
Quero dizer o Discourse como um IdP para o meu próprio programa independente. Só não tenho certeza de qual é a melhor maneira de vincular coisas como um ID da Riot Games, já que eles ainda não possuem uma solução OAuth pública. Sei que eles acabam de anunciar o RSO, mas ainda não definiram uma data para que ele esteja disponível publicamente.
Atualmente, para que aplicativos de terceiros “verifiquem” uma conta da Riot, é necessário que os usuários façam login no cliente do League of Legends e alterem um campo na aba de configurações. Eu estava apenas tentando encontrar uma maneira de ir do Discourse para a API do League e, em seguida, adicionar o campo de perfil personalizado assim que a verificação for concluída.
Aqui está a parte onde o código entra para referência. Basicamente, consigo então chamar a API do League e verificar se o valor desse código corresponde ao que foi instruído para ser usado.
Além disso, estou usando um sistema de login SAML para o meu Discourse, pois ele se integra ao restante do meu site, e gostaria de ter uma maneira de adicionar nomes de usuário do Discord “verificados” de forma semelhante. Novamente, não tenho muita certeza de como faria para que o usuário logado no Discourse solicitasse um OAuth via Discord OAuth e, em seguida, alterasse o valor no lado do Discourse.
Espero que isso faça algum sentido e mostre o que estou tentando realizar. Se você ainda precisar de mais informações sobre o que estou tentando fazer, posso fornecer mais detalhes. Meu único objetivo é mostrar contas verificadas nos perfis. Planejo ter Minecraft (Mojang), Discord e Riot Games (League of Legends), mas, para o meu uso, precisaria que fossem valores verificados para evitar impersonação.
Acredito que o link Twitch ↔ Riot usado para as versões beta do Valorant era OAuth2, em login. Não tenho certeza se é possível criar um client_id.
Bem, isso parece viável com um plugin personalizado!
Isso deve funcionar usando nossa integração nativa com o Discord. Basta ativar o login com Discord e os usuários poderão vincular seus perfis do Discord em suas páginas de perfil.
Sim, atualmente não é público e ainda está nos estágios iniciais. Eles falaram sobre isso neste artigo https://www.riotgames.com/en/DevRel/rso no site de desenvolvedores deles.
Foi o que pensei, então vou ver se consigo fazer isso funcionar.
A única razão pela qual não estou tentando usar a integração nativa do Discord é porque o restante dos meus sites já possui autenticação por meio de um IdP principal e gostaria que as pessoas criassem apenas uma conta para todo o meu site, se faz sentido. Vou ver se consigo fazer o plugin do League of Legends funcionar e avaliar o quão difícil seria fazer o que estou pensando. Só não tinha certeza se havia maneiras de acessar e editar perfis de usuários a partir de uma aplicação PHP ou similar. Em última análise, eu estava apenas pensando em usar PHP para um sistema simples de login OAuth onde eles fazem login com o Discord, mas estou tendo problemas com a forma como poderia “dizer” ao script PHP qual usuário iniciou a solicitação, a menos que eu possa iniciar a solicitação via Discourse e fazer com que o script PHP verifique se é legítimo.
Muito obrigado a todos pelas respostas aqui. Ainda sou novo na gestão do meu próprio Discourse e aprecio toda a ajuda. ![]()
Bem, terei que verificar se os plugins têm mais acesso do que programas externos via API, já que não consegui encontrar nenhuma maneira de editar um campo de usuário pela API em https://docs.discourse.org/.
