https://blog.danielthank.me/posts/oauth-2-pkce-explained/