Bon travail pour avoir trouvé cela 
Je ne veux pas minimiser le travail que vous avez accompli, mais ma première impression est que vous devriez envisager d’utiliser un service d’authentification externe (tel que okta.com ou auth0.com) à ce stade. Chaque fois que vous arrivez au point de connecter trois services différents (par exemple Patreon, WordPress et Discourse) pour obtenir une authentification unique en une seule étape, c’est le signe que vous devriez envisager une solution d’authentification dédiée. Que vous puissiez ou non y parvenir d’une manière ou d’une autre, il existe un risque non négligeable à long terme que votre solution tombe en panne ou ne fonctionne pas dans tous les cas.
Si vous souhaitez tout de même emprunter cette voie, j’ai quelques suggestions, mais sachez que cela va devenir un peu technique. Je les ajoute ici en partie au cas où d’autres personnes tomberaient dessus et voudraient aller plus loin.
J’ai jeté un coup d’œil rapide au code du plugin Patreon pour WordPress et il semble que leur flux OAuth accepte une clé/valeur final_redirect_uri dans le paramètre state, ce qui vous permettrait de passer directement de l’authentification Patreon à l’authentification SSO de Discourse, éliminant ainsi le besoin des plugins Members et Redirect mentionnés ci-dessus, et évitant tout problème qui pourrait survenir avec cette approche.
De nombreux services d’authentification disposent d’une version du paramètre final_redirect_uri, c’est-à-dire un paramètre qui vous permet de modifier l’endroit où l’utilisateur est redirigé après l’authentification. Si vous lisez ceci parce que vous essayez de résoudre le même problème, mais avec un service différent (autre que Patreon), et que vous avez également décidé que mon avertissement contre la connexion de trois services différents ne s’applique pas, c’est là que vous devriez chercher.
Cela signifie que vous voudriez que le shortcode qui génère le bouton de connexion Patreon accepte un final_redirect_uri en tant qu’argument, qui serait ensuite transmis à l’URL de connexion finale utilisée par Patreon. En examinant le code du plugin Patreon pour WordPress, c’est une proposition réalisable. Pour vous donner une idée, la fonction pertinente qui génère l’URL Patreon ressemble à ceci :
Patreon_Frontend::patreonMakeLoginLink(false, array( 'final_redirect_uri' => # ) );
Fondamentalement, le code est déjà partiellement configuré pour gérer un final_redirect_uri personnalisé. Je comprends pourquoi les développeurs du plugin Patreon pour WordPress pourraient ne pas vouloir l’ajouter, mais si vous vous sentez assez à l’aise pour décrire ce que j’ai expliqué ici, cela pourrait valoir la peine de créer un problème sur leur dépôt GitHub. À défaut, vous pouvez utiliser la fonction que j’ai référencée ci-dessus pour générer un lien vous-même et créer votre propre bouton (ou engager un développeur WordPress pour le faire).
Juste une petite remarque sur la construction de l’URL SSO, il est plus clair d’utiliser
https://discourse.example.com/session/sso?return_path=/
au lieu de
https://discourse.example.com/session/sso?return_path=%2F
Ce dernier élément, le return_path, est le chemin vers lequel l’utilisateur est redirigé dans Discourse après la connexion. S’il s’agit de /, ils seront envoyés à la page d’accueil du forum. Pour en savoir plus sur la construction des URL SSO, consultez WP Discourse Tips and Tricks.