<!-- thumbnail: https://i.sstatic.net/4QizM.png --> <!-- version: 1.0 --> <!-- tag: website --> <!-- excerpt: This is about a GitHub fork of a static website generator demo to add Stack Exchange / Stack Overflow as a *proof of concept* --> ## Screenshot / Code Snippet [![Login with Stack Overflow - Eleventy Serverless OAuth Demo][1]][1] [![Secure page - Eleventy Serverless OAuth Demo][2]][2] ## About Eleventy is a static website generator. On version 1 it added support for severless functions. During the beta, the Eleventy maintainer created a demo for using serverles functions to add OAuth support to a static site including Netlify, GitHub and others but not Stack Exchange / Stack Overflow as OAuth providers. This is about a fork of the demo repo to add Stack Exchange / Stack Overflow as a *proof of concept*. ### License TBD ### Download Website: https://serene-bonbon-b699e0.netlify.app/ ### Platform Web browsers: Chrome, Firefox, Safari. Other browsers like Brave and Edge might work to. ## Contact I created this website / repo from the main branch of https://github.com/11ty/demo-eleventy-serverless-oauth. ## Code - Node.js - GitHub - Netlify - Eleventy - Nunjucks - JavaScript - HTML - CSS ### Highlights - The Stack Exchange Authentication uses https://stackoverflow.com as the token host. - To get the user data, use https://api.stackexchange.com, including the **access token** taken from the OAuth flow and the **key** from the app registration. - To get the access token, I'm using https://stackoverflow.com/oauth/access_token/json. - I added the **client id** and **client secret** to the Netlify environment variables as instructed on the referred demo's README.md and the **key** above. I added several if statements to handle using Stack Exchange as an OAuth provider and adapted `secure.njk` to handle the Stack Exchange user profile data. # My Learning Outcomes The demo uses the simple-outh2 Node.js package to authenticate and retrieve the user profile data. There is no need to use this library to get the Stack Exchange user profile. The built-in fetch method introduced in Node.js version 18 can handle this request. # Now I paused the work on this repo to focus on. I will keep this here for a while. # Roadmap 1. Clean the code. 2. Make a PR into the depo repo owned by 11ty (GitHub user). # Related ## [tag:app] - https://stackapps.com/q/10533/105187 ## [tag:support] - https://stackapps.com/q/4132/105187 - https://stackapps.com/q/8398/105187 [1]: https://i.sstatic.net/4QizM.png [2]: https://i.sstatic.net/2I1m9.png