Thanks for this! I just had a look at the docs/examples for flask-oauth, flask-rauth and flask-oauthlib. They each appear to provide similar functionality: redirect the user to authorize the app, and then return back an access token and maybe other account details like username or email address.
I see that I would have to build my own functionality for keeping track of users between sessions, i.e. a persistent user database.
Do you create a 'shadow' user account in your system to correspond with each authorized account? What happens if someone logs in with Facebook one day, and Google another day; do they end up with two user accounts?
More importantly, do you write your user management code again each time you create a new project, or is it modular enough that you can re-use it?