1. Facebook Authentication:
To implement Facebook authentication in your Node.js application, you can use the "Passport" middleware along with the "passport-facebook" strategy. Here's a simplified example:
Install the necessary packages:
npm install passport passport-facebook express-session
Configure Passport for Facebook authentication:
const passport = require('passport');
const FacebookStrategy = require('passport-facebook').Strategy;
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: 'http://yourwebsite.com/auth/facebook/callback',
}, (accessToken, refreshToken, profile, done) => {
// Use profile data to create or authenticate a user
// You can also store user information in your database
return done(null, profile);
}));
Set up routes for authentication
app.get('/auth/facebook',
passport.authenticate('facebook'));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { failureRedirect: '/' }),
(req, res) => {
// Successful authentication, redirect or respond as needed
res.redirect('/profile');
});
Add Facebook login buttons on your front-end and link them to /auth/facebook.
2. Google Authentication:
For Google authentication, you can use the "passport-google-oauth" strategy along with Passport:
Install the necessary packages:
npm install passport passport-google-oauth express-session
Configure Passport for Google authentication:
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: 'http://yourwebsite.com/auth/google/callback',
}, (accessToken, refreshToken, profile, done) => {
// Use profile data to create or authenticate a user
// You can also store user information in your database
return done(null, profile);
}));
Set up routes for Google authentication similar to the Facebook example.
3. Email/Password Authentication:
For email/password authentication, you'll typically implement your custom authentication system. You can use libraries like "passport-local" for local authentication:
Install the necessary packages:
npm install passport passport-local express-session
Configure Passport for local authentication:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
(username, password, done) => {
// Implement your custom logic to authenticate the user
// Check the username and password against your database
if (username === validUsername && password === validPassword) {
return done(null, { id: 1, username: validUsername });
} else {
return done(null, false, { message: 'Invalid credentials' });
}
}
));
Set up routes for email/password authentication:
app.post('/login',
passport.authenticate('local', {
successRedirect: '/profile',
failureRedirect: '/login',
failureFlash: true, // Enable flash messages for failed login attempts
}));
// Implement routes for user registration, password reset, etc.
Implement registration and user management routes where users can create accounts.
Remember to handle user sessions and secure your authentication routes. Depending on your application's requirements, you may also want to implement features like user profile management, password reset, and session management. Additionally, consider using a database to store user information and manage authentication tokens securely.