Social Login funktioniert nur auf Desktop, aber nicht auf mobilen Geräten (CSRF detected)

Hallo,
mein Discourse-Forum hat ein Problem mit Social Logins (Google, Discord, LinkedIn):

  • Auf Desktop funktionieren alle Social Logins einwandfrei.

  • Auf allen mobilen Geräten (iOS/Android, Safari/Chrome/Firefox) schlagen sie fehl.

Der Ablauf mobil:

  1. Social Login öffnet sich normal.

  2. Nach dem Redirect zurück zu meiner Seite lande ich nur auf der Startseite, aber bin nicht eingeloggt.

In den Logs steht jedes Mal:

(google_oauth2) Authentication failure! csrf_detected

oder

(discord) Authentication failure! invalid_credentials: invalid_request

Was ich bereits geprüft habe:

  • OAuth-Setup korrekt (Desktop funktioniert)

  • Cookies/Cache auf Geräten gelöscht

  • Keine In-App-Browser, echte Browser getestet

  • Egal welcher mobile Browser → immer CSRF detected

Frage:
Was kann in Discourse dazu führen, dass Social Logins nur auf mobilen Geräten die Session/Cookies verlieren und mit csrf_detected abbrechen?

Danke für jede Hilfe! :folded_hands:


Ist dies eine Standardinstallation? Wenn nicht, haben Sie force_https aktiviert?

Hallo, ja es ist eine Standard-Discourse-Installation (Auf Hetzner Server installiert).

Ich habe die Lösung für das Problem gefunden, bei dem Social Logins (Google, Discord etc.) auf mobilen Geräten mit csrf_detected fehlschlagen, obwohl sie auf dem PC funktionieren.

Die Ursache lag in meinem Theme:

Ein benutzerdefiniertes JavaScript-Skript in der <head>-Sektion des Themes hat die Seite auf mobilen Geräten ständig neu geladen (window.location.replace).

Dieser erzwungene Redirect hat den temporären CSRF-Token zerstört, der für die Session-Validierung nach dem Callback von Google/Discord notwendig ist.

Lösung:

Ich habe das gesamte Skript zur Erzwingung der mobilen Ansicht aus dem Theme entfernt.

Wenn ihr ähnliche Probleme habt und ein Custom Theme nutzt, prüft, ob dort Skripte laufen, die Redirects auslösen. Das war bei mir der Übeltäter!