Hari Thanks! I added a comment about Facebook there.
A theory:
Flarum creates a state random string. It is sent to the login provider. But, during the split second redirect back, Flarum creates another state string? I don’t know how to debug or figure out if that’s true. Or, due to some cookie/cache, Flarum thinks the state string is old.
Even though the Twitter login gives a different error compared to Facebook and Google, it still could be an invalid state issue for that one too.