OAuth redirige vers /login après un appel JSON utilisateur réussi

Ma configuration OAuth de base se comporte de manière étrange. J’ai rencontré quelques erreurs lors de la configuration initiale, que j’ai résolues. Cependant, je constate maintenant que le flux suit le chemin suivant : Discourse → Point de terminaison d’autorisation Cognito → Callback Discourse → /login de Discourse. Il n’y a aucun avertissement ou erreur dans les journaux, et en examinant les logs, je vois qu’un appel JSON réussi permet de récupérer les données de l’utilisateur.

Étant donné qu’un jeton semble avoir été obtenu avec succès et que les données JSON ont été chargées, je m’attendrais à ce que le compte utilisateur soit enregistré avec succès. Or, l’utilisateur est redirigé vers la page de connexion.

Veuillez consulter les journaux ci-dessous.

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

Toute aide concernant ce qui se produit serait extrêmement utile. Je suis bien sûr prêt à fournir les traces d’erreur si nécessaire.

La redirection est normale, mais une fenêtre contextuelle d’inscription devrait également apparaître. La voyez-vous ?

Le compte utilisateur n’est créé qu’après que l’utilisateur a confirmé les détails du compte et cliqué sur Créer.

Bonjour David,

Malheureusement, cette information ne renvoie aucun résultat permettant de confirmer l’identité sans saisir toutes leurs données.

Par ailleurs, est-il possible de confirmer automatiquement l’utilisateur ? Son adresse e-mail est déjà vérifiée de notre côté et je souhaite rendre cette expérience aussi fluide que possible pour nos utilisateurs.

Il n’est pas encore possible de sauter la fenêtre contextuelle, mais tout devrait être automatiquement prérempli avec les données de votre fournisseur d’identité.

Quelles sont les valeurs de vos paramètres oauth2 ? Prenons oauth2_json_email_path comme exemple.

De plus, pouvez-vous partager la ligne complète “user_json” du journal afin que nous puissions voir toutes les clés ? (N’hésitez pas à masquer les adresses e-mail).

Les données complètes étaient

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

et les valeurs des champs étaient « id » et « username » pour les champs concernés.

Je mets actuellement à jour le point de terminaison pour ajouter l’e-mail et le nom, mais j’avais cru comprendre qu’un id et un username étaient les seuls requis.

Merci,

Patrick

Les seules données minimales requises pour connecter le compte à un compte Discourse sont l’id. Cependant, Discourse a besoin d’un nom d’utilisateur et d’une adresse e-mail. C’est pourquoi nous affichons la fenêtre modale d’inscription.

Si vous pouvez ajouter ces informations à l’API OAuth, cela rendra le processus beaucoup plus fluide pour vos utilisateurs :+1:

Oui, je suis en train de traiter cela ! Je vais mettre à jour le point de terminaison pour inclure également l’adresse e-mail et voir si cela résout le problème.

Dans ce cas, le nom d’utilisateur devrait au moins apparaître sur la page d’inscription, non ?

Merci,

Patrick

Oui, c’est le cas. Avez-vous configuré oauth2_json_username_path sur username ?

@david, merci l’ami ! J’ai réussi à faire fonctionner le tout avec les données.

Quelle est la bonne méthode pour demander un drapeau afin de confirmer automatiquement les utilisateurs OAuth ?

Merci,

Patrick

Que voulez-vous dire par confirmation automatique ? Ignorer la confirmation par e-mail ? Ou ignorer la fenêtre modale d’inscription ?

Le premier point est déjà possible. Le second est à l’étude pour une mise en œuvre prochaine.

Parfait ! Je parlais du deuxième ! Mais si c’est déjà sur votre radar, alors tout est bon !

Le nouveau paramètre external_auth_skip_create_confirm provenant de Automatically provision accounts with external SSO provider? (skip Create New Account prompt) - #6 by david est-il pris en charge par OAuth2 ?

C’est tout à fait le cas ! C’est pris en charge par tous les fournisseurs d’authentification Discourse (même Facebook, GitHub, Google, etc.) :smiley: