Konsep Utama:
passport-facebook
). passport-github
Persediaan Aplikasi:
Inisialisasi Projek: Buat direktori projek dan mulakan projek node.js:
mkdir AuthApp cd AuthApp npm init -y
dalam root projek:
auth.html
<!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>
npm install express passport --save
:
index.js
Jalankan aplikasi (
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}`));
node index.js
http://localhost:3000
Ctrl C
Konfigurasi Pasport:
Pasang Strategi Penyedia:
Pasang Strategi Facebook dan GitHub:Persediaan pasport
dinpm install passport-facebook passport-github --save
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));
Buat aplikasi Facebook:
Ikuti arahan Facebook untuk membuat aplikasi baru dan dapatkan
App ID
App Secret
Konfigurasi Strategi Facebook dalam
ingat untuk mengkonfigurasi uris redirect OAuth aplikasi Facebook anda ke 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') );
http://localhost:3000https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback
Pengesahan GitHub:
Buat aplikasi GitHub:
Buat aplikasi GitHub baru dan dapatkan
Client ID
Client Secret
Konfigurasi strategi github dalam
Konfigurasikan URL Panggilan Kebenaran GitHub anda ke 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') );
http://localhost:3000https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback
Jalankan aplikasi:
Mulakan pelayan (node index.js
) dan uji pautan log masuk Facebook dan GitHub. Laluan /success
akan menunjukkan pengesahan yang berjaya. Ingatlah untuk menggantikan ID dan Rahsia Pemegang Sedang dengan nilai sebenar anda. Ini menyediakan rangka asas; Pengendalian ralat dan kegigihan pengguna dalam pangkalan data diperlukan untuk aplikasi siap pengeluaran.
Atas ialah kandungan terperinci Pengesahan Pasport untuk Aplikasi Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!