I can vouch for passport-twitch.
Another way to store the target URL besides flash storage and session cookies is to encode it in a JWT and send the JWT as OAuth2’s state parameter. The main advantage is that you don’t need any additional server storage until the user is actually authenticated and you can painlessly add more data if you need to.