Ce tutoriel démontre l'authentification Facebook et GitHub dans une application Web Node.js à l'aide de Passport.js, un middleware d'authentification populaire. Le passeport simplifie l'intégration OAuth et OpenID Connect.
Concepts clés:
passport-facebook
, passport-github
). Configuration de l'application:
Initialisation du projet: Créez un répertoire de projet et initialisez un projet Node.js:
mkdir AuthApp cd AuthApp npm init -y
Configuration HTML: Créer auth.html
dans la racine du projet:
<!DOCTYPE html> <html> <head> <title>Node.js OAuth</title> </head> <body> <a href="https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76">Sign in with Facebook</a><br><br> <a href="https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac">Sign in with GitHub</a> </body> </html>
Installez les dépendances: Installer Express et Passeport:
npm install express passport --save
Application Express: Créer index.js
:
const express = require('express'); const app = express(); const port = process.env.PORT || 3000; app.get('/', (req, res) => res.sendFile('auth.html', { root: __dirname })); app.listen(port, () => console.log(`App listening on port ${port}`));
Exécutez l'application (node index.js
) et Verify http://localhost:3000
Affiche le HTML. Arrêtez l'application (Ctrl C
).
Configuration du passeport:
Installez les stratégies du fournisseur: Installez les stratégies Facebook et GitHub:
npm install passport-facebook passport-github --save
Configuration du passeport dans index.js
:
const passport = require('passport'); app.use(passport.initialize()); app.use(passport.session()); app.get('/success', (req, res) => res.send("Successfully logged in!")); app.get('/error', (req, res) => res.send("Error logging in.")); passport.serializeUser((user, done) => done(null, user)); passport.deserializeUser((user, done) => done(null, user));
Authentification Facebook:
Créer une application Facebook: Suivez les instructions de Facebook pour créer une nouvelle application et obtenir votre App ID
et App Secret
.
Configurer la stratégie Facebook dans index.js
:
const FacebookStrategy = require('passport-facebook').Strategy; const FACEBOOK_APP_ID = 'YOUR_FACEBOOK_APP_ID'; // Replace with your App ID const FACEBOOK_APP_SECRET = 'YOUR_FACEBOOK_APP_SECRET'; // Replace with your App Secret passport.use(new FacebookStrategy({ clientID: FACEBOOK_APP_ID, clientSecret: FACEBOOK_APP_SECRET, callbackURL: "https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback", profileFields: ['id', 'displayName', 'photos', 'email'] //Optional: Specify fields to retrieve }, (accessToken, refreshToken, profile, done) => { done(null, profile); })); app.get('https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76', passport.authenticate('facebook')); app.get('https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback', passport.authenticate('facebook', { failureRedirect: '/error' }), (req, res) => res.redirect('/success') );
N'oubliez pas de configurer les UAut de redirection de votre application Facebook URUTH vers http://localhost:3000https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback
.
Authentification GitHub:
Créez une application GitHub: Créez une nouvelle application GitHub et obtenez votre Client ID
et Client Secret
.
Configurer la stratégie GitHub dans index.js
:
const GitHubStrategy = require('passport-github').Strategy; const GITHUB_CLIENT_ID = 'YOUR_GITHUB_CLIENT_ID'; // Replace with your Client ID const GITHUB_CLIENT_SECRET = 'YOUR_GITHUB_CLIENT_SECRET'; // Replace with your Client Secret passport.use(new GitHubStrategy({ clientID: GITHUB_CLIENT_ID, clientSecret: GITHUB_CLIENT_SECRET, callbackURL: "https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback" }, (accessToken, refreshToken, profile, done) => { done(null, profile); })); app.get('https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac', passport.authenticate('github')); app.get('https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback', passport.authenticate('github', { failureRedirect: '/error' }), (req, res) => res.redirect('/success') );
Configurez l'URL de rappel d'autorisation de votre application GitHub vers http://localhost:3000https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback
.
Exécutez l'application:
Démarrez le serveur (node index.js
) et testez les liens de connexion Facebook et GitHub. La route /success
indiquera une authentification réussie. N'oubliez pas de remplacer les ID et les secrets d'espace réservé par vos valeurs réelles. Cela fournit un cadre de base; La gestion des erreurs et la persistance des utilisateurs dans une base de données seraient nécessaires pour une application prête pour la production.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!