pub async fn login() -> Result<OAuthCredentials, String>
Run the full OAuth login flow. Returns saved credentials.