Spent today writing a new Python library. Super useful if you are making command-line OSM processing scripts:
https://github.com/Zverik/cli-oauth2
With it you add OAuth2 authentication in just one line of code (well, 3-4 after PEP8).
1 2 3 4 5
auth = OpenStreetMapAuth( client_id, client_secret, ['read_prefs', 'write_api'] ).auth_server(token_test=lambda s: s.get('user/details')) user_name = auth.get('user/details.json').json()['user']['display_name']
This line starts a local web server, opens OSM OAuth page, catches the redirect, stores the token on disk, and returns a requests session that also prepends the API endpoint to its parameter.
Not very secure — but it doesn’t need to be. One drawback is when publishing sources to github, you would need to publish your client credentials as well. Or just read then from a config file, idk.
Already updated my Simple Revert and OSM to Sandbox scripts to use it. Hope it helps!