Remember the days when users needed unique usernames and passwords for every app? It’s time to move on.
Let’s make logging into your app simpler by integrating GitHub Sign-In, a great choice for developers and tech-savvy users.
GitHub OAuth allows you to seamlessly authenticate users and access their public profile or additional data via GitHub’s API.
Let’s break this down into manageable steps for your frontend and backend.
Go to GitHub Settings: Navigate to GitHub Developer Settings.
OAuth Apps: Click on OAuth Apps in the sidebar.
Copy the Client ID: Once created, GitHub will provide a Client ID.
Create a Client Secret: Generate a Client Secret that will be required for backend operations, such as exchanging tokens for user data.
Use the following HTML and CSS to display a GitHub login button:
<div> <pre class="brush:php;toolbar:false">.github-signin-container { background-color: #000; transition: background-color 0.3s ease; border-radius: 6px; border: none; } .github-signin-btn { display: flex; align-items: center; justify-content: center; background-color: #000; color: #fff; font-size: 16px; font-weight: 600; padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; transition: background-color 0.3s ease; width: 100%; } .github-signin-btn:hover { background-color: #333; } .github-signin-btn .github-icon { width: 25px; height: 25px; margin-right: 8px; } .github-signin-btn span { font-family: Arial, sans-serif; font-size: 16px; }
Use JavaScript to redirect the user to GitHub’s authorization page:
const handleGithubLogin = () => { const githubAuthUrl = `https://github.com/login/oauth/authorize?client_id=${GITHUB_CLIENT_ID}&redirect_uri=${REDIRECT_URI}&scope=read:user`; window.location.href = githubAuthUrl; };
Replace GITHUB_CLIENT_ID and REDIRECT_URI with your values.
GitHub will redirect back to your app with a ?code=
useEffect(() => { const params = new URLSearchParams(window.location.search); const code = params.get("code"); if (!code) return; const target = `https://backend.com/external-signup?app=${appName}&accessToken=${code}&provider=github`; callBackendAPI("GET", target); }, []);
This sends the code to your backend to securely exchange it for an access token.
Use GitHub’s OAuth token endpoint:
const GITHUB_ACCESS_TOKEN_URL = 'https://github.com/login/oauth/access_token'; const url = `${GITHUB_ACCESS_TOKEN_URL}?client_id=${GITHUB_CLIENT_ID}&client_secret=${GITHUB_SECRET_ID}&code=${request.body.code}`; const response = await fetch(url, { method: "GET", headers: { Accept: "application/json", "Accept-Encoding": "application/json", }, }); const githubUserData = await response.json(); const accessToken = githubUserData.access_token;
Replace GITHUB_CLIENT_ID and GITHUB_SECRET_ID with the values from Step 1.
With the access token, call GitHub’s User API to retrieve user information:
<div> <pre class="brush:php;toolbar:false">.github-signin-container { background-color: #000; transition: background-color 0.3s ease; border-radius: 6px; border: none; } .github-signin-btn { display: flex; align-items: center; justify-content: center; background-color: #000; color: #fff; font-size: 16px; font-weight: 600; padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; transition: background-color 0.3s ease; width: 100%; } .github-signin-btn:hover { background-color: #333; } .github-signin-btn .github-icon { width: 25px; height: 25px; margin-right: 8px; } .github-signin-btn span { font-family: Arial, sans-serif; font-size: 16px; }
Use this data to create or update a user in your database.
I’m working on a tool called LiveAPI that generates secure, beautiful API documentation directly from your codebase. Bonus: It lets you execute APIs and generate request snippets in any language!
Try it out and save time on documentation while focusing on your app. Happy coding!
The above is the detailed content of How To Integrate GitHub Sign-In: A Four Step Guide. For more information, please follow other related articles on the PHP Chinese website!