Aplicativo móvel android Discourse Hub não consegue encontrar servidor privado

Meu servidor Discourse privado está funcionando e acessível via navegador e aplicativo móvel iOS.

No entanto, no Android, o Discourse Hub não consegue encontrar o servidor. (Ele consegue encontrar outros servidores como meta.discourse.org.)

Alguma ideia do porquê isso falha? Poderia ser que o aplicativo móvel Android use um agente de rastreamento diferente para acessar o servidor do que a versão iOS? Ou algum outro motivo?

Sim, o aplicativo móvel faz algumas requisições específicas para determinar que a URL é um servidor Discourse.

Existem duas requisições:

  • Uma requisição HEAD para serverdomain.com/user-api-key/new
  • Uma requisição GET para serverdomain.com/site/basic-info.json

Se qualquer uma delas não retornar dados, o aplicativo presumirá que a URL não é um site Discourse.

1 curtida

Mais útil, @pmusaraj! Obrigado. Para dar seguimento:

1- A requisição GET obtém uma resposta, mas a instrução HEAD retorna um erro de ‘valor inválido’. (Isso também é verdade para meta.discourse.org, mas ambos os aplicativos móveis conseguem se conectar a esta instância.) Como eu altero o servidor para produzir uma resposta adequada à requisição HEAD?

2- Por que a versão para iOS passa nesses testes com sucesso e se conecta ao meu servidor?

1 curtida

Ah, isso é uma indicação de que o lado do Discourse provavelmente está bom, a verificação do site é a mesma no iOS e no Android.

Lembro que algumas versões/dispositivos Android são mais rigorosos com certificados SSL, houve um caso semelhante no passado, mas há muito tempo: Community not found in App Android Version 7 - #37 by h.vdheurik

1 curtida

Para que conste, um amigo meu testou isso usando um Android de fábrica com o mesmo resultado. Meu dispositivo é um Pixel 8a rodando a versão mais recente do GrapheneOS.

Isso poderia ser uma nova incompatibilidade de cifra semelhante à que você mencionou de 2017?

Eu não sei. Se você quiser me enviar o URL do site em particular, posso depurar um pouco mais.

Verificamos os rastreadores. Meu servidor bloqueou muitos rastreadores e parece que um deles estava impedindo a conexão do aplicativo móvel. Após redefinir para as configurações de fábrica, o aplicativo conseguiu se conectar.

Em seguida, adicionei o okhttp como o único rastreador permitido e o aplicativo móvel ainda conseguiu se conectar. Crise evitada. :slight_smile:

Agradecimentos a @pmusaraj por verificar o código do aplicativo Android e trabalhar nesta solução.

2 curtidas