Triển khai xác thực Facebook and Google sử dụng passport trong Node.js

Nội dung bài viết

Video học lập trình mỗi ngày

Đăng nhập một hệ thống có thể dựa vào nhiều bên thứ ba như Facebook và Google ưu điểm nhanh gọn, thông tin chính xác nhưng tích hợp thế nào khi chúng ta đang sử dụng Node.js

Quy trình xác thực Facebook and Google sử dụng passport trong Node.js

Trong ví dụ này, chúng ta đang sử dụng thư viện passport để tích hợp Google và Facebook trong kiến trúc này. Quy trình như sau: Để xác thực với Google, chúng tôi chuyển hướng người dùng đến trang đăng nhập Google OAuth2 và yêu cầu quyền truy cập hồ sơ của người dùng. Sau khi người dùng cấp quyền, Google sẽ chuyển hướng người dùng trở lại ứng dụng của chúng tôi bằng mã thông báo truy cập (accessToken).

Sau đó, chúng tôi có thể sử dụng accessTokenđể lấy profile của người dùng và lưu profile đó vào cơ sở dữ liệu. Quá trình xác thực với Facebook cũng tương tự. Tôi hy vọng ví dụ này giúp bạn hiểu cách tích hợp với các dịch vụ xác thực của bên thứ ba trong Node.js.

Thực hành xác thực Facebook and Google với passport

Còn đây là mã code:

const express = require('express');
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const FacebookStrategy = require('passport-facebook').Strategy;

const app = express();

passport.use(new GoogleStrategy({
  clientID: process.env.GOOGLE_CLIENT_ID,
  clientSecret: process.env.GOOGLE_CLIENT_SECRET,
  callbackURL: '/auth/google/callback'
}, (accessToken, refreshToken, profile, cb) => {
  // Save the user's profile to the database or create a new user
  // Then call the callback function with the user's information
  cb(null, user);
}));

passport.use(new FacebookStrategy({
  clientID: process.env.FACEBOOK_APP_ID,
  clientSecret: process.env.FACEBOOK_APP_SECRET,
  callbackURL: '/auth/facebook/callback'
}, (accessToken, refreshToken, profile, cb) => {
  // Save the user's profile to the database or create a new user
  // Then call the callback function with the user's information
  cb(null, user);
}));

app.get('/auth/google', passport.authenticate('google', {
  scope: ['profile']
}));

app.get('/auth/google/callback', passport.authenticate('google', {
  successRedirect: '/',
  failureRedirect: '/login'
}));

app.get('/auth/facebook', passport.authenticate('facebook'));

app.get('/auth/facebook/callback', passport.authenticate('facebook', {
  successRedirect: '/',
  failureRedirect: '/login'
}));

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

Xin chào!

Có thể bạn đã bị missing