Errore durante il tentativo di autorizzare il tuo account con Patreon

Ciao,

Sto usando il plugin Discourse Patreon e ho riscontrato un problema. L’integrazione funziona perfettamente per gli utenti che hanno lo stesso indirizzo email sia su Discourse che su Patreon: possono collegare i loro account e ottenere il gruppo/i vantaggi corretti.

Tuttavia, per gli utenti che hanno un indirizzo email diverso su Patreon e Discourse, quando tentano di collegare il loro account Patreon tramite il pulsante “Connetti” nel loro profilo Discourse, ricevono questo errore dopo aver autorizzato su Patreon:

Mi dispiace, si è verificato un errore durante il tentativo di autorizzare il tuo account con Patreon. Riprova.

Ciò accade indipendentemente dal dispositivo o dal browser.

Importante: il plugin funziona altrimenti: gli utenti con email corrispondenti vengono associati e ottengono i loro vantaggi, quindi Client ID, Secret e Redirect URI sono tutti impostati correttamente.

Cosa ho provato:

  • Assegnazione manuale del gruppo (viene rimossa dalla sincronizzazione)
  • Ricontrollo di tutte le impostazioni del plugin e dell’app Patreon
  • Test su più dispositivi e browser

C’è un modo per consentire agli utenti con email diverse di collegare il loro account Patreon al loro account Discourse esistente, o almeno per evitare questo errore?

Qualsiasi consiglio o best practice sarebbe molto apprezzato!

Grazie!


2 Mi Piace

Per molto tempo abbiamo utilizzato il plugin Patreon con API V1 per Discourse per accedere con Patreon. Questa è la configurazione consigliata secondo la documentazione ufficiale del plugin Patreon di Discourse: https://meta.discourse.org/t/configure-patreon-integration-with-discourse/62380

Screenshot 2025-10-28 at 11.59.15 AM

Tuttavia, Patreon non supporta più la V1 da anni. Si rompe continuamente, non si sincronizza completamente e, più recentemente, ha smesso di funzionare per noi.

Il problema è che quando passiamo all’API V2 supportata da Patreon, l’autorizzazione degli utenti fallisce. Quando gli utenti tentano di fare clic su “Accedi con Patreon” e consentono all’API v2 di connettersi al loro account Patreon, ricevono questo errore:

Mi dispiace, si è verificato un errore durante il tentativo di autorizzare il tuo account con Patreon. Riprova.

E secondo la documentazione ufficiale del plugin Patreon per Discourse, si afferma specificamente che l’API v2 può causare questi errori di autenticazione. Ciò rende la v2 inutilizzabile.

Screenshot 2025-10-28 at 12.05.06 PM

Fortunatamente, abbiamo trovato una soluzione alternativa per far funzionare l’API v2. Questa soluzione dovrebbe essere aggiunta alla documentazione ufficiale perché al momento l’API v1, che è quella consigliata, è completamente rotta.

Soluzione

La soluzione è creare un OAuth2 personalizzato. Invece di utilizzare il pulsante “Accedi con Patreon” del plugin Patreon, gli utenti utilizzeranno un pulsante di accesso personalizzato che abbiamo creato e che si autenticherà con Patreon utilizzando il nostro oauth.

Passaggio 1: Aggiungi questi URI di reindirizzamento a Patreon.

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

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

Passaggio 2: In Discourse vai su Admin > Accesso e Autenticazione > OAuth2 e configura quanto segue:

  • oauth2_enabled: true

  • oauth2_client_id: <il_tuo_client_id_Patreon>

  • oauth2_client_secret: <il_tuo_client_secret_Patreon>

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

  • oauth2_authorize_signup_url: (lasciare vuoto)

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

  • oauth2_callback_user_id_path: (lasciare vuoto)

  • 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: (lasciare vuoto)

  • oauth2_email_verified: true (fidati del provider per ridurre le richieste) Se alcuni patron non hanno un’email, imposta questo su false e attenditi una richiesta di registrazione.

  • 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: Accedi con Patreon

  • oauth2_allow_association_change: false (consigliato)

Passaggio 3: Nei controlli di accesso principali di Discourse configura quanto segue:

  • enable sso: false

  • patreon login enabled: false (impedisce due pulsanti Patreon; mantieni il plugin solo per la sincronizzazione)

  • allow new registrations: scegli:

    • true per consentire ai nuovi patron di creare account
    • false per consentire solo agli utenti Discourse esistenti di accedere
  • invite only: false durante il test

  • must approve users: false durante il test

  • session_cookie_domain: (vuoto)

Passaggio 4: Nel tuo file yml di Discourse configura quanto segue per rete e host.

  • DISCOURSE_HOSTNAME in app.yml: <il_tuo_link_al_server_discourse>

  • force_https: true

Passaggio 5: Ricostruisci la tua app per implementare le modifiche:

cd /var/discourse
./launcher rebuild app

Risultato:

Ora dovresti avere il tuo pulsante funzionante “Accedi con Patreon” tramite OAuth2 che funziona correttamente con l’API v2 e sincronizza correttamente i tuoi gruppi di utenti con Patreon.

1 Mi Piace

Bel lavoro, @watson! Ho spostato la tua soluzione in questo argomento per ora e l’ho spostata in Feature perché riguarda un miglioramento/correzione al funzionamento del plugin ufficiale di patreon. Se una o due altre persone riescono a replicare e confermare che i tuoi passaggi funzionano, allora penso che sarà necessario un aggiornamento alle istruzioni ufficiali di patreon.