A Cloudflare Worker + GitHub Pages Login Example
The github-oauth-login.js file is a Cloudflare Worker which is continuously deployed using GitHub Actions (see .github/workflows/deploy.yml).
The worker does 3 things
- When you open the worker URL, it will redirect to the OAuth App's login URL on github.com (example).
- It accepts a
POST
request with the OAuthcode
retrieved from the OAuth callback redirect and returns an OAuth access token in return - It enables CORS.
The index.html file is a demo of a "Login with GitHub", you can see the demo at gr2m.github.io/cloudflare-worker-github-oauth-login/index.html. Look at its source code. If something is unclear, please feel free to open an issue or ping me on twitter.
Note that you require access to the new GitHub Actions for the automated deployment to work.
- Create a GitHub App or GitHub OAuth App
- Fork this repository
- Create a Cloudflare account (it's free!) if you don't have one yet.
- Add the following secrets in your fork's repository settings:
CLIENT_ID
,CLIENT_SECRET
: In your GitHub (OAuth) App's settings page, findClient ID
andClient SECRET
CLOUDFLARE_AUTH_EMAIL
: Find your account's email on your profile pageCLOUDFLARE_AUTH_KEY
: On your profile page, open theAPI Tokens
tab, findGlobal API Key
.CLOUDFLARE_ACCOUNT_ID
: Open dash.cloudflare.com, select your account, then select your website. FindZone ID
andAccount ID
- Enable GitHub Pages in your repository settings, select
Source
to be themaster branch
. - In index.html, replace the
gr2m
workers subdomain with your own, inWORKERS_URL
and the login<a href="...">
tag.
That should be it. The github-oauth-login.js
file is now continously deployed to Cloudflare each time there is a commit to master.
The OAuth App Avatar and this repository's social preview are using @cameronmcefee's cloud Octodex graphic 💖