Oauth reindirizza a /login dopo chiamata JSON utente riuscita

La mia configurazione per OAuth di base si sta comportando in modo piuttosto strano. Inizialmente ho riscontrato alcuni errori durante la configurazione, che ho poi risolto. Tuttavia, ora vedo che il flusso procede da Discourse all’endpoint di autorizzazione di Cognito, poi al callback di Discourse e infine a /login di Discourse. Non ci sono avvisi o errori nei log; anzi, controllando i log, vedo che c’è stata una chiamata JSON di successo per recuperare i dati dell’utente.

Considerando che sembra esserci un token valido e che i dati JSON sono stati caricati correttamente, mi aspetterei che l’account utente venga registrato con successo. Invece, l’utente viene reindirizzato alla pagina di accesso.

Di seguito sono riportati i log:

OAuth2 Debugging: after_authenticate response: creds: {"token"=>"eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc2LTQ5OWEtYjdiN
3:48 pm
OAuth2 Debugging: user_json_url: GET https://api.lifebac.com/token/details?token=eyJraWQiOiJ3YW8zbVBRWmh2Z2F6YldNaU5jS3ZOdVdRMXRmcm1ya2ZVZ2RvVjVYSG1RPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJkNzhkZDliNS03Mjc
3: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
3:48 pm
OAuth2 Debugging: user_json: {"id"=>"d78dd9b5-7276-499a-b7b6-02da38e03ce9", ...}

Qualsiasi aiuto su ciò che sta accadendo sarebbe estremamente utile. Sono più che felice di fornire gli stack trace se necessario.

Il reindirizzamento è normale, ma dovrebbe apparire anche un popup di registrazione. Lo vedi?

L’account utente viene creato solo dopo che l’utente conferma i dettagli dell’account e preme “Crea”.

Ciao David,

Purtroppo, quelle informazioni risultano vuote e non possiamo confermare nulla senza inserire tutti i loro dati.

Inoltre, è possibile confermare automaticamente l’utente? La sua email è già verificata dal nostro lato e vorrei rendere questa esperienza il più fluida possibile per i nostri utenti.

Non è ancora possibile saltare il popup, ma tutti i campi dovrebbero essere compilati automaticamente con i dati provenienti dal tuo provider di identità.

Quali sono i valori delle tue impostazioni oauth2? Prendiamo ad esempio oauth2_json_email_path.

Inoltre, puoi condividere la riga completa “user_json” dal log, così possiamo vedere tutte le chiavi. (sentiti libero di oscurare gli indirizzi email)

I dati completi erano

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

e i valori dei campi erano “id” e “username” per i campi applicabili.

Sto attualmente aggiornando l’endpoint per aggiungere email e nome, ma avevo l’impressione che fossero richiesti solo id e username.

Grazie,

Patrick

I dati minimi necessari per collegare l’account a un account Discourse sono solo l’id. Tuttavia, Discourse richiede un nome utente e un indirizzo email. Ecco perché viene visualizzato il modulo di registrazione.

Se è possibile aggiungere queste informazioni all’API OAuth, si renderà il processo molto più fluido per i tuoi utenti :+1:

Sì, ci sto lavorando proprio ora! Aggiungerò l’endpoint per includere anche l’email e vedremo se questo risolve il problema.

Tuttavia, in quel caso, il nome utente dovrebbe almeno essere trasmesso alla pagina di registrazione, no?

Grazie,

Patrick

Sì, dovrebbe esserlo. Hai configurato oauth2_json_username_path come username?

@david, grazie amico! Ho fatto funzionare tutto con i dati.

Qual è il modo corretto per richiedere un flag per confermare automaticamente gli utenti oauth?

Grazie

Patrick

Cosa intendi per conferma automatica? Saltare la conferma via email? O saltare la finestra di registrazione?

Il primo è già possibile. Il secondo è in fase di valutazione per un’implementazione a breve.

Perfetto! Intendevo il secondo! Ma se è già nella tua lista, allora siamo a posto!

La nuova impostazione external_auth_skip_create_confirm di Automatically provision accounts with external SSO provider? (skip Create New Account prompt) - #6 by david è supportata su Oauth2?

Certo che lo è! È supportato da tutti i provider di autenticazione di Discourse (anche Facebook, GitHub, Google, ecc.) :smiley: