Tenho um aplicativo móvel. O Discourse é minha fonte de autenticação. Para fazer login no aplicativo móvel, o usuário precisa digitar seu nome de usuário e senha. Em seguida, farei uma chamada à API de login do Discourse para autenticar o usuário.
Agora, existem alguns links no aplicativo móvel que levam ao fórum Discourse. Quero que o usuário faça login automaticamente no fórum ao clicar nesses links. É uma experiência de usuário muito ruim quando os usuários precisam digitar suas senhas duas vezes: a primeira ao fazer login no aplicativo e a segunda ao tentar acessar o fórum.
Como o login sem senha por meio de um link enviado ao e-mail do usuário é possível, acredito que esse procedimento também seja viável. Talvez com um plugin simples.
Quando você precisa que seja feito?
1 semana.
Qual é o seu orçamento, em USD, que você pode oferecer para esta tarefa?
300$
Na verdade, isso é um pouco mais complexo do que pode parecer.
A forma como o login por e-mail funciona é que, quando você clica no botão “com e-mail” no modal de login, um token é gerado, específico para aquele usuário, e armazenado em email_tokens. Você pode ver esse token no link (a sequência de números e letras):
Você precisaria gerar esse token para os links no seu aplicativo sempre que o usuário fizer login. Não acho (?) que essa funcionalidade esteja exposta via API atualmente, então você precisaria primeiro configurar um endpoint.
Esse endpoint teria que ser protegido por autenticação. Você precisaria de uma maneira de lidar com isso no seu aplicativo. Talvez você já tenha isso?
Em seguida, você precisaria considerar coisas como expiração do token. Por quanto tempo o token deve permanecer válido? Como buscar um novo e atualizar os links assim que ele expirar?
Parece que deveria haver uma maneira melhor de lidar com esse problema do que adaptar essa funcionalidade posteriormente.
Sim. Eu mesmo estava pensando exatamente nisso. E como o login com e-mail já está implementado, também deve ser possível. Não sei sobre a implementação real. Talvez devesse ser feito com um plugin. Se você puder fazer isso, me avise.
Sim, a autenticação é feita pela API de login do Discourse. E não há problema com isso.
O link de login com e-mail tem um valor de expiração? Podemos usar a mesma coisa ou algo similar.
Outras coisas, como buscar um novo token, serão feitas pelo próprio aplicativo.
Sim, a expiração do token de e-mail é definida pela configuração do site “horas de validade do token de e-mail”.
Então, basicamente, você quer um plugin que adicione um endpoint para criar e retornar um email_token para um usuário, e você o chamará regularmente quando os tokens expirarem?
E também, como quero enviar o usuário para um tópico específico, se o ID do tópico ou um link pudessem ser adicionados e, após o login, o usuário fosse redirecionado para lá, ficaria perfeito.
Seria outra abordagem fazer com que os links no app apontem para o seu próprio backend. Quando você clicar neles, um link apropriado será criado nesse momento e o cliente será redirecionado, de alguma forma, para ir ao lugar certo.
Isso significaria que você não precisaria gerar links de autenticação antes de o usuário clicar neles.