Issue #2: Switch to OAuth2 for authentication