OAuth 2.0 Flows Explained: Authorization Code, PKCE, Client Credentials