Hey Bitzo,
You can use OAuth 2.0 with role accounts, but it isn't really something we've optimized for yet. I'd suggest:
Initial setup:
1. Registering a client (installed app, for simplicity)
2. Signing in as your role account, and approving access to the relevant permissions to the client you registered
3. Swap the code you get through the installed app flow for a refresh token; burn the refresh token into your script
Runtime:
4. Use your client credentials and refresh token to fetch access tokens for your role account, downscoping as required
Does that make sense?