การใช้การตรวจสอบสิทธิ์ OAuth 2.0 ใน Node.js

ขั้นตอนที่ 1: ตั้งค่าโครงการ Node.js

เริ่มต้นด้วยการตั้งค่าโปรเจ็กต์ Node.js ใหม่โดยใช้ตัวจัดการแพ็คเกจ เช่น npm หรือเส้นด้าย รันคำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:

csharpCopy code
npm init

สิ่งนี้จะสร้างไฟล์ package.json เพื่อจัดการการขึ้นต่อกันของโปรเจ็กต์ของคุณ

ขั้นตอนที่ 2: ติดตั้งแพ็คเกจที่จำเป็น

หากต้องการใช้การรับรองความถูกต้อง OAuth 2.0 ใน Node.js เราจำเป็นต้องติดตั้งแพ็คเกจที่จำเป็น รันคำสั่งต่อไปนี้ในเทอร์มินัลของคุณ:

Copy code
npm install express passport passport-google-oauth20

การดำเนินการนี้จะติดตั้ง Express.js ซึ่งเป็นเฟรมเวิร์กเว็บ Node.js ยอดนิยม และแพ็คเกจ passport และ passport-google-oauth20 ซึ่งจำเป็นสำหรับการตรวจสอบสิทธิ์ OAuth 2.0 กับ Google

ขั้นตอนที่ 3: สร้างข้อมูลรับรอง OAuth 2.0

ก่อนดำเนินการต่อ คุณต้องสร้างข้อมูลรับรอง OAuth 2.0 ในคอนโซลนักพัฒนาซอฟต์แวร์ของแพลตฟอร์มที่เกี่ยวข้อง ตัวอย่างเช่น หากคุณต้องการใช้ Google OAuth ให้ไปที่ Google Developers Console (**https://console.developers.google.com/**) สร้างโครงการใหม่และเปิดใช้งาน Google OAuth 2.0 API . รับรหัสไคลเอ็นต์และความลับไคลเอ็นต์สำหรับแอปพลิเคชันของคุณ

ขั้นตอนที่ 4: กำหนดค่า Passport.js

สร้างไฟล์ใหม่ passport.js เพื่อกำหนดค่า Passport.js ซึ่งเป็นมิดเดิลแวร์การตรวจสอบสิทธิ์ยอดนิยมสำหรับ Node.js ในไฟล์นี้ ให้เริ่มต้น Passport.js ตั้งค่ากลยุทธ์ Google OAuth 2.0 และกำหนดฟังก์ชันการทำให้เป็นอนุกรมและการดีซีเรียลไลซ์

javascriptCopy code
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(
  new GoogleStrategy(
    {
      clientID: 'YOUR_CLIENT_ID',
      clientSecret: 'YOUR_CLIENT_SECRET',
      callbackURL: '/auth/google/callback',
    },
    (accessToken, refreshToken, profile, done) => {
      // Code to handle user authentication and retrieval
    }
  )
);

passport.serializeUser((user, done) => {
  // Code to serialize user data
});

passport.deserializeUser((id, done) => {
  // Code to deserialize user data
});

แทนที่ 'YOUR_CLIENT_ID' และ 'YOUR_CLIENT_SECRET' ด้วยข้อมูลรับรองของคุณเองที่ได้รับจากผู้ให้บริการ OAuth

ขั้นตอนที่ 5: สร้างเส้นทางการตรวจสอบสิทธิ์

สร้างไฟล์ใหม่ authRoutes.js เพื่อกำหนดเส้นทางการรับรองความถูกต้องสำหรับแอปพลิเคชันของคุณ ในไฟล์นี้ ให้กำหนดเส้นทางสำหรับเริ่มต้นขั้นตอนการตรวจสอบสิทธิ์ OAuth 2.0 การจัดการ URL เรียกกลับ และออกจากระบบผู้ใช้

javascriptCopy code
const express = require('express');
const passport = require('passport');
const router = express.Router();

// Initiates the Google OAuth 2.0 authentication flow
router.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

// Callback URL for handling the OAuth 2.0 response
router.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/login' }), (req, res) => {
  // Successful authentication, redirect or handle the user as desired
  res.redirect('/');
});

// Logout route
router.get('/logout', (req, res) => {
  req.logout();
  res.redirect('/');
});

module.exports = router;

ขั้นตอนที่ 6: ตั้งค่าเซิร์ฟเวอร์ Express.js

ในไฟล์เซิร์ฟเวอร์หลักของคุณ (เช่น app.js) ให้นำเข้าแพ็คเกจที่จำเป็นและกำหนดค่าเซิร์ฟเวอร์ Express.js รวมมิดเดิลแวร์ Passport.js การจัดการเซสชัน และเส้นทางการตรวจสอบสิทธิ์

javascriptCopy code
const express = require('express');
const session = require('express-session');
const passport = require('passport');
const authRoutes = require('./authRoutes');

const app = express();

app.use(session({ secret: 'YOUR_SESSION_SECRET', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());

app.use('/', authRoutes);

// Start the server
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

แทนที่ 'YOUR_SESSION_SECRET' ด้วยสตริงลับที่ใช้ในการลงนามคุกกี้ ID เซสชัน

ขั้นตอนที่ 7: การทดสอบขั้นตอนการตรวจสอบสิทธิ์

เริ่มต้นเซิร์ฟเวอร์ Node.js ของคุณโดยใช้ node app.js หรือคำสั่งที่เหมาะสม ไปที่เส้นทางที่เหมาะสม (เช่น /auth/google) ในเว็บเบราว์เซอร์ของคุณเพื่อเริ่มต้นขั้นตอนการตรวจสอบสิทธิ์ OAuth 2.0 หลังจากการรับรองความถูกต้องสำเร็จ คุณจะถูกนำไปยัง URL ติดต่อกลับ (/auth/google/callback) พร้อมข้อมูลผู้ใช้ จากนั้นคุณสามารถจัดการข้อมูลนี้ได้ตามต้องการ เช่น การจัดเก็บในฐานข้อมูลหรือการสร้างเซสชันผู้ใช้

หากคุณมีคำถามหรือข้อเสนอแนะ โปรดแจ้งให้เราทราบใน "Instagram" ของฉันหรือที่ [email protected]