Start here. This is the direct spoken answer to practice first.
Why this question matters
Teams often say OAuth when they mean login, then treat every token as interchangeable. The distinction matters because the browser, server, identity provider, and API each trust different artifacts for different purposes.
OAuth 2.0 is an authorization framework for obtaining access to a resource; OpenID Connect adds an identity layer for authenticating the user. In an interactive login, the client redirects the user to the identity provider, receives a short-lived authorization code, and exchanges it for tokens. PKCE binds that exchange to the client instance that started it, so stealing the code alone is not enough. The API accepts an access token intended for that API; an ID token is evidence for the client about the login and is not a substitute API credential.