Configurando login do Twitter e embeds ricos para Discourse

Para ser totalmente justo com a equipe do Discourse, isso é diferente do problema em dezembro de 2020. A última postagem desse problema diferente foi logo antes da primeira postagem de @dnfoz aqui, e foi de mais de um ano atrás. O problema de @dnfoz foi postado há apenas 8 dias, não meses atrás. O problema é que o Twitter está constantemente mudando sua API porque eles — francamente — não têm ideia do que estão buscando com sua plataforma. É por isso que um problema de um ano atrás será totalmente diferente de um, digamos, de uma semana atrás, com o Twitter em particular. E se este fosse um problema de meses atrás, fora de osmose e leitura de mentes, você ou alguém teria que postar sobre isso para que eles soubessem.

2 curtidas

Parece funcionar, exceto que no cadastro ele não preenche o campo de e-mail automaticamente? Estou fazendo algo errado? Funciona com meu cadastro do Google, onde ele preenche o e-mail automaticamente.

1 curtida

Veja o exemplo de @dnfoz. Isso se deve ao fato de que cada provedor de SSO é diferente, o que significa que a forma como o Google faz isso é um pouco diferente do Twitter, e o Twitter está entre os piores, se não o pior. A API do Twitter é um alvo em movimento porque o Twitter não sabe o que diabos está fazendo e o Twitter não mostra cortesia aos desenvolvedores que criam em torno de sua API. Então, sendo brutalmente honesto com você, a menos que nós, administradores do Discourse, ou a equipe do Discourse estejamos constantemente fiscalizando este plug-in para mudanças a montante no lado do Twitter, ele quebrará constantemente assim.

2 curtidas

Obrigado por isso. Sim, acho que não devo perder mais tempo aprendendo e mexendo com APIs do Twitter que, como você diz, podem mudar a qualquer momento. Tenho certeza de que meus usuários vão lidar com isso!

2 curtidas

Isso não quer dizer que a Equipe Discourse já não esteja trabalhando em uma solução, o que eles estão, e pode não exigir nada mais do que atualizar o plug-in para que ele funcione novamente no lado do administrador. O problema é que este é um problema habitual com o Twitter porque eles são uma corporação mal administrada. Manterei meu plug-in Twitter SSO ainda como uma opção, mas o Twitter definitivamente não é uma opção segura e confiável como qualquer um dos outros SSO.

1 curtida

Se ainda estivermos tendo esses problemas, podemos tentar reproduzir o mesmo problema em try.discourse.org? Consegui fazer login normalmente com minha conta do Twitter lá.

4 curtidas

Uau, cadastrar-se com o Twitter no fórum do subdomínio try que você acabou de compartilhar parece ter funcionado perfeitamente. Isso realmente me faz pensar se há uma colisão de plugins ou alguma configuração única acontecendo aqui.

2 curtidas

Tão estranho. Ainda estou tendo o comportamento estranho no meu site. É produção, então não posso alterar muitas coisas, mas farei o meu melhor para tentar descobrir. Não deve ser algo tão único se outros usuários também estão relatando isso.

1 curtida

Em comparação com a postagem original aqui, o Twitter mudou visualmente a forma como as configurações são configuradas. É assim que configurei (as configurações que são seguras para compartilhar publicamente aqui no fórum, de qualquer forma) para minha instância do Discourse, pelo menos:

EDIT: Isso pode ser algo. Embora ainda exista uma opção para solicitar e-mail dos usuários, não há mais uma configuração para Habilitar autenticação de terceiros, conforme mencionado na postagem original. Para pessoas que configuraram seu login do Twitter antes dessa mudança em suas configurações, isso pode não ser um problema, pois o Twitter pode mantê-las e migrar suas configurações. No entanto, não estou vendo mais essa opção, o que pode representar um problema para usuários como eu e @dnfoz, que estão configurando nossos fóruns pela primeira vez e o Discourse precisa ter autenticação de terceiros para concluir com sucesso o processo de handshake do SSO.

EDIT 2: Aqui está outra coisa para pensar. O Discourse espera a API v1 ou v2 do Twitter? Para novos desenvolvedores, eles não oferecem mais a v1, pois mencionam apenas a migração para aqueles que já estavam usando a v1, sem menção ao suporte legado da v1 para novos usuários. Veja os detalhes aqui:

Como descrito no link acima, parece que eles permitem apenas que contas de desenvolvedor preexistentes migrem a v1. Não vejo nenhuma maneira ou documentação para habilitar a v2 em novas contas de desenvolvedor e, portanto, tenho apenas suporte v2.

Então, assumindo que o SSO e a incorporação esperam a API v1 do Twitter, isso pode exigir algum esforço de codificação para suportar ambos os lançamentos da API ou desativar o suporte v1 se uma abordagem dupla não for possível.

EDIT 3: Lendo o fórum Discourse de Desenvolvedores do Twitter (ah, a ironia que o próprio Twitter usa Discourse!), minhas suspeitas parecem estar quase confirmadas. De acordo com o banner fixado deles (visualizável aqui: Twitter Developers (twittercommunity.com)), novos desenvolvedores não podem acessar a API v1.1:

Você é novo na plataforma e está pronto para começar?

Encorajamos você a inscrever-se para acesso Essencial e fazer sua primeira solicitação à API.

Assim que você se inscrever, terá um projeto com acesso Essencial em sua conta, que fornecerá o seguinte:

3 curtidas

Sim, é exatamente isso que estou obtendo no songwritingsteps.com - ele preenche “user1” e nenhum e-mail.

Por favor, me avise se você descobrir! Eu estava batendo minha cabeça contra a parede por horas :confused:

1 curtida

Não, nenhuma ideia! Posso sempre configurar um fórum em uma VM na minha máquina local e ver se consigo descobrir o que está acontecendo. No entanto, no momento, ainda não há pistas. Estou chutando, mas como mencionado, suspeito que seja a expectativa de suporte à API V1 que é a culpada. O suporte legado V1 necessário simplesmente não existe mais para novas contas de desenvolvedor, como acabei de compartilhar.

1 curtida

Obrigado! Ótima investigação, @Hifihedgehog. Estamos analisando o melhor caminho a seguir e forneceremos uma atualização quando a tivermos.

Obrigado pela paciência de todos.

2 curtidas

Não acho que você possa configurar logins sociais em uma máquina local. Você precisa de um certificado https válido. Você tem um certificado válido para acessar a VM em sua máquina local?

1 curtida

Na verdade, não é muito complicado: eu poderia configurar um túnel SSH para minha máquina local a partir do meu VPS e, em seguida, apontá-lo para um proxy em meu servidor web que já possui um certificado SSL. :wink:

3 curtidas

Ok, acho que conseguimos resolver o mistério :mag_right:

Como @Hifihedgehog apontou, novas contas de desenvolvedor do Twitter começam no plano “Essencial” e são limitadas aos endpoints da API v2. Nosso login integrado do Twitter atualmente precisa acessar os endpoints v1.1. Felizmente, isso não é um problema!

Há duas coisas importantes a serem observadas neste gráfico em X API v2 - X

Você pode obter acesso à API v1.1 gratuitamente no plano Elevado. Você simplesmente precisa se inscrever no seu painel de desenvolvedor. Achei muito rápido e fácil. Os logins do Twitter do Discourse funcionaram perfeitamente depois disso :tada:

Atualizarei o OP para incluir este novo requisito.

10 curtidas

Cara, você está certo! Levou apenas alguns minutos e fui aprovado instantaneamente. Correções simples são sempre boas! :smile:

5 curtidas

8 posts foram divididos em um novo tópico: Citação quebrada quando o nome corresponde ao nome de usuário

Se a chave secreta ou a chave do Twitter for atualizada, isso impacta os usuários existentes? Se sim, existe uma maneira de “corrigir” isso? Encontrei estas instruções para atualizações de login do Facebook, seria este o script correto para usar?

cd /var/discourse
./launcher enter app
rails c
UserAssociatedAccount.where(provider_name: "twitter").delete_all

Meus links do Twitter não estão mais sendo incorporados após a configuração do login do Twitter. Primeiro, configurei as chaves de consumidor do Twitter, o login não funcionou como esperado. Agora estou no plano “Elevated”, então devo ter acesso ao endpoint v1.1.

O login agora funciona como esperado, mas quando reconstruo uma postagem com links do Twitter, eles permanecem como links simples.

Quando reconstruo uma postagem antiga que já tem tweets incorporados, as incorporações são removidas.

Alguma ideia?

EDIT: Isso parece ter sido corrigido na atualização mais recente (2.9.0.beta5 - 0ae7b43018)

1 curtida

Estou tendo um problema com isso, pois as imagens aparecem quebradas. Exemplo:

Alguma ideia…? Está tudo atualizado :confused:

1 curtida