Olá,
Estou desenvolvendo um plugin muito específico para nossa instância do Discourse e tenho algumas dúvidas.
Em algum momento, o plugin precisará enviar uma coleção de imagens de tópicos do Discourse para o Imgur. A parte que coleta essas imagens já está pronta.
Agora estou tentando autenticar na API do Imgur usando o fluxo OAuth2 deles. Já criei uma interface de administração para o plugin que permite clicar em um botão e autorizar o plugin na sua conta do Imgur. Após o usuário fazer login, uma URL de callback (configurada como minha instância do Discourse e uma rota específica que criei no plugin) é chamada com o token de acesso (veja o exemplo).
http://localhost:3000/admin/plugins/plugin_name/callback#access_token=<token>&...
Minha pergunta é: como posso obter esse token de volta? Não faço ideia de por onde começar.
Minha compreensão é que, como o token é retornado em um parâmetro de hash, isso deve ser feito no lado do JS. Tentei configurar um controlador e uma rota para minha URL de callback, mas não consegui descobrir como ler a URL (e especialmente a parte do hash) a partir dali. (Não encontrei nada útil na documentação do Ember.js ou no StackOverflow). Tentei configurar diferentes ouvintes de eventos, mas eles nunca parecem ser acionados.
Minha segunda pergunta é: onde devo armazenar o token e o token de atualização? Posso salvá-lo como uma configuração do sistema do plugin? Ouvi falar do PluginStore, mas ele só é acessível em Ruby (o que significaria criar um endpoint para o cliente enviar esses tokens ao servidor). Além disso, isso é seguro do ponto de vista de segurança?
Obrigado!
Edição: Tive um erro de digitação no nome do arquivo da minha rota, faltava um ‘s’, por isso nada foi acionado…