OAuth redirecionando para /login após chamada JSON de usuário bem-sucedida

Minha configuração para OAuth básico está se comportando de forma bastante estranha. Tive alguns erros inicialmente durante a configuração e os resolvi. No entanto, agora vejo o fluxo indo de Discourse → Endpoint de Autorização do Cognito → Callback do Discourse → /login do Discourse. Não há avisos ou erros no log e, ao verificar os registros, posso ver que houve uma chamada JSON bem-sucedida para obter os dados do usuário.

Considerando que parece haver um token bem-sucedido e os dados JSON foram carregados, esperaria que a conta do usuário fosse registrada com sucesso. Em vez disso, o usuário é redirecionado para a página de login.

Veja os logs abaixo:

OAuth2 Debugging: after_authenticate response: creds: {"token"=>"eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc2LTQ5OWEtYjdiN
7:48 pm
OAuth2 Debugging: user_json_url: GET https://api.lifebac.com/token/details?token=eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc
7:48 pm
OAuth2 Debugging: user_json_response: #<Excon::Response:0x00007f36a7608a30 @data={:body=>"{\"id\":\"d78dd9b5-7276-499a-b7b6-02da38e03ce9\", ...}", :cookies=>[], :host=>"api.lifebac.com", :headers=>{"Conten
7:48 pm
OAuth2 Debugging: user_json: {"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", ...}

Qualquer ajuda sobre o que está acontecendo seria extremamente útil. Fico mais do que feliz em fornecer os rastreamentos de erro, se necessário.

O redirecionamento é normal, mas também deve aparecer um pop-up de registro. Você está vendo isso?

A conta do usuário só é criada após o usuário confirmar os detalhes da conta e clicar em criar.

Olá David,

Infelizmente, essa informação não está retornando nada para confirmar sem que todos os dados deles sejam inseridos.

Além disso, é possível confirmar o usuário automaticamente? O e-mail deles já está verificado do nosso lado e gostaria de manter essa experiência o mais fluida possível para nossos usuários.

Ainda não é possível pular o popup, mas todos os campos devem ser preenchidos automaticamente com dados do seu provedor de identidade.

Quais são os valores das suas configurações de OAuth2? Vamos usar oauth2_json_email_path como exemplo.

Além disso, você pode compartilhar a linha completa “user_json” do log, para que possamos ver todas as chaves? (sinta-se à vontade para remover os e-mails)

Os dados completos eram

{"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", "username"=>"patrick2"}

e os valores dos campos eram “id” e “username” para os campos aplicáveis.

Estou atualizando o endpoint agora para adicionar e-mail e nome, mas eu tinha a impressão de que apenas id e username eram necessários.

Obrigado,

Patrick

O mínimo de dados para conectar a conta a uma conta do Discourse é apenas o id. No entanto, o Discourse precisa de um nome de usuário e um e-mail. É por isso que exibimos o modal de cadastro.

Se você puder adicionar essas informações à API OAuth, isso tornará tudo muito mais suave para seus usuários :+1:

Sim, estou trabalhando nisso agora mesmo! Vou atualizar o endpoint para incluir também o e-mail e ver se isso resolve o problema.

Mas, nesse caso, o nome de usuário certamente deveria estar chegando à página de cadastro, não?

Obrigado,

Patrick

Sim, deveria. Você configurou oauth2_json_username_path como username?

@david, valeu, parceiro! Consegui fazer tudo funcionar com os dados.

Qual é a maneira correta de solicitar uma flag para confirmar automaticamente os usuários do OAuth?

Obrigado,

Patrick

O que você quer dizer com confirmação automática? Pular a confirmação por e-mail? Ou pular o modal de registro?

O primeiro já pode ser feito. O segundo está em nosso radar para ser implementado em breve.

Perfeito! Queria dizer o segundo! Mas se já está no seu radar, então estamos ótimos!

A nova configuração external_auth_skip_create_confirm de Automatically provision accounts with external SSO provider? (skip Create New Account prompt) - #6 by david é suportada no Oauth2?

Com certeza! É suportado em todos os provedores de autenticação do Discourse (inclusive Facebook, GitHub, Google, etc.) :smiley: