Erreur lors de la tentative d'autorisation de votre compte avec Patreon

Salut,

J’utilise le plugin Discourse Patreon et j’ai rencontré un problème. L’intégration fonctionne parfaitement pour les utilisateurs qui ont la même adresse e-mail sur Discourse et Patreon – ils peuvent lier leurs comptes et obtenir le bon groupe/les bons avantages.

Cependant, pour les utilisateurs qui ont une adresse e-mail différente sur Patreon et Discourse, lorsqu’ils essaient de lier leur compte Patreon via le bouton « Connecter » dans leur profil Discourse, ils reçoivent cette erreur après avoir autorisé sur Patreon :

Désolé, une erreur s’est produite lors de la tentative d’autorisation de votre compte avec Patreon. Veuillez réessayer.

Cela se produit indépendamment de l’appareil ou du navigateur.

Important : Le plugin fonctionne par ailleurs – les utilisateurs avec des e-mails correspondants sont associés et obtiennent leurs avantages, donc l’ID client, le secret et l’URI de redirection sont tous correctement configurés.

Ce que j’ai essayé :

  • Attribution manuelle de groupe (supprimée par la synchronisation)
  • Vérification de tous les paramètres du plugin et de l’application Patreon
  • Test sur plusieurs appareils et navigateurs

Existe-t-il un moyen de permettre aux utilisateurs ayant des adresses e-mail différentes de lier leur compte Patreon à leur compte Discourse existant, ou du moins d’éviter cette erreur ?

Tout conseil ou meilleure pratique serait grandement apprécié !

Merci !


2 « J'aime »

Pendant très longtemps, nous avons utilisé le plugin patreon avec l’API V1 pour Discourse afin de nous connecter avec Patreon. C’est la configuration recommandée selon la documentation officielle du plugin patreon de Discourse : https://meta.discourse.org/t/configure-patreon-integration-with-discourse/62380

Screenshot 2025-10-28 at 11.59.15 AM

Cependant, Patreon ne prend plus en charge la V1 depuis des années. Elle est constamment défaillante, ne se synchronise pas entièrement, et récemment, elle ne fonctionnait tout simplement plus pour nous.

Le problème est que lorsque nous passons à l’API V2, prise en charge par Patreon, l’autorisation des utilisateurs échoue. Lorsque les utilisateurs essaient de cliquer sur “Se connecter avec Patreon” et autorisent l’API v2 à se connecter à leur compte Patreon, ils reçoivent cette erreur :

Désolé, une erreur s’est produite lors de la tentative d’autorisation de votre compte avec Patreon. Veuillez réessayer.

Et selon la documentation officielle du plugin patreon pour Discourse, il est spécifiquement indiqué que l’API v2 peut causer ces erreurs d’authentification. Ce qui rend la v2 inutilisable.

Screenshot 2025-10-28 at 12.05.06 PM

Heureusement, nous avons trouvé une solution de contournement pour faire fonctionner l’API v2. Cette solution devrait être ajoutée à la documentation officielle car actuellement, l’API v1, qui est recommandée, est complètement défaillante.

Solution

La solution consiste à créer un OAuth2 personnalisé. Au lieu que les utilisateurs utilisent le bouton “Se connecter avec Patreon” du plugin patreon, ils utiliseront un bouton de connexion personnalisé que nous avons créé et qui s’authentifiera avec Patreon en utilisant notre propre OAuth.

Étape 1 : Ajoutez ces URI de redirection à Patreon.

  • https://<votre_lien_serveur_discourse>/auth/oauth2_basic/callback

  • https://<votre_lien_serveur_discourse>/auth/patreon/callback

Étape 2 : Dans Discourse, allez dans Admin > Connexion et authentification > OAuth2 et configurez ce qui suit :

  • oauth2_enabled : true

  • oauth2_client_id : <votre_client_id_Patreon>

  • oauth2_client_secret : <votre_client_secret_Patreon>

  • oauth2_authorize_url : https://www.patreon.com/oauth2/authorize

  • oauth2_authorize_signup_url : (laisser vide)

  • oauth2_token_url : https://www.patreon.com/api/oauth2/token

  • oauth2_callback_user_id_path : (laisser vide)

  • oauth2_callback_user_info_paths : email

  • oauth2_token_url_method: POST

  • oauth2_callback_user_info_paths: email

  • oauth2_fetch_user_details : true

  • oauth2_user_json_url : https://www.patreon.com/api/oauth2/v2/identity?include=memberships&fields[user]=email,full_name,vanity

  • oauth2_json_user_id_path : data.id

  • oauth2_json_name_path : data.attributes.full_name

  • oauth2_json_username_path : data.attributes.vanity

  • oauth2_json_email_path : data.attributes.email

  • oauth2_json_email_verified_path : (laisser vide)

  • oauth2_email_verified : true (fait confiance au fournisseur pour réduire les invites) Si certains patrons n’ont pas d’e-mail, définissez cette option sur false et attendez-vous à une invite d’inscription.

  • oauth2_email_verified: true

  • oauth2_send_auth_header : true

  • oauth2_send_auth_body : true

  • oauth2_debug_auth: true

  • oauth2_authorize_options: scope

  • oauth2_scope : identity identity[email] campaigns campaigns.members

  • oauth2_button_title : Se connecter avec Patreon

  • oauth2_allow_association_change : false (recommandé)

Étape 3 : Dans les contrôles de connexion de base de Discourse, configurez ce qui suit :

  • enable sso : false

  • patreon login enabled : false (empêche deux boutons Patreon ; conservez le plugin uniquement pour la synchronisation)

  • allow new registrations : choisissez :

    • true pour permettre aux nouveaux patrons de créer des comptes
    • false pour n’autoriser que les utilisateurs Discourse existants à se connecter
  • invite only : false pendant les tests

  • must approve users : false pendant les tests

  • session_cookie_domain : (vide)

Étape 4 : Dans votre fichier yml Discourse, configurez ce qui suit pour le réseau et les hôtes.

  • DISCOURSE_HOSTNAME dans app.yml : <votre_lien_serveur_discourse>

  • force_https : true

Étape 5 : Reconstruisez votre application pour implémenter les changements :

cd /var/discourse
./launcher rebuild app

Résultat :

Vous devriez maintenant avoir votre propre bouton de connexion OAuth2 fonctionnel avec Patreon qui fonctionne réellement avec l’API v2 et qui synchronise correctement vos groupes d’utilisateurs avec Patreon.

1 « J'aime »

Excellent travail, @watson ! J’ai déplacé votre solution dans ce sujet pour l’instant, et je l’ai déplacée dans Feature car il s’agit d’une amélioration/correction du fonctionnement du plugin patreon officiel. Si une ou deux autres personnes parviennent à reproduire et à confirmer que vos étapes fonctionnent, je pense qu’une mise à jour des instructions officielles de patreon sera nécessaire.