在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):jaredhanson/passport-google-oauth2开源软件地址(OpenSource Url):https://github.com/jaredhanson/passport-google-oauth2开源编程语言(OpenSource Language):JavaScript 99.6%开源软件介绍(OpenSource Introduction):passport-google-oauth20Passport strategy for authenticating with Google using OAuth 2.0. This module lets you authenticate using Google in your Node.js applications. By plugging into Passport, Google authentication can be easily and unobtrusively integrated into any application or framework that supports Connect-style middleware, including Express.
Advertisement
Install$ npm install passport-google-oauth20 TypeScript support$ npm install @types/passport-google-oauth20 UsageRegister ApplicationThe Google strategy authenticates users using their Google account. Before your application can make use of Google's authentication system, you must first register your app to use OAuth 2.0 with Google APIs. Once registered, a client ID and secret will be issued which are used by Google to identify your app. To register, complete the following steps:
Configure StrategyOnce you've registered your application, the strategy needs to be configured with your application's client ID and secret, along with its OAuth 2.0 redirect endpoint. The strategy takes a The Because the var GoogleStrategy = require('passport-google-oauth20');
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: 'https://www.example.com/oauth2/redirect/google',
scope: [ 'profile' ],
state: true
},
function verify(accessToken, refreshToken, profile, cb) {
db.get('SELECT * FROM federated_credentials WHERE provider = ? AND subject = ?', [
'https://accounts.google.com',
profile.id
], function(err, cred) {
if (err) { return cb(err); }
if (!cred) {
// The account at Google has not logged in to this app before. Create a
// new user record and associate it with the Google account.
db.run('INSERT INTO users (name) VALUES (?)', [
profile.displayName
], function(err) {
if (err) { return cb(err); }
var id = this.lastID;
db.run('INSERT INTO federated_credentials (user_id, provider, subject) VALUES (?, ?, ?)', [
id,
'https://accounts.google.com',
profile.id
], function(err) {
if (err) { return cb(err); }
var user = {
id: id,
name: profile.displayName
};
return cb(null, user);
});
});
} else {
// The account at Google has previously logged in to the app. Get the
// user record associated with the Google account and log the user in.
db.get('SELECT * FROM users WHERE id = ?', [ cred.user_id ], function(err, row) {
if (err) { return cb(err); }
if (!row) { return cb(null, false); }
return cb(null, row);
});
}
});
}
)); Define RoutesTwo routes are needed in order to allow users to log in with their Google account. The first route redirects the user to the Google, where they will authenticate: app.get('/login/google', passport.authenticate('google')); The second route processes the authentication response and logs the user in, after Google redirects the user back to the app: app.get('/oauth2/redirect/google',
passport.authenticate('google', { failureRedirect: '/login', failureMessage: true }),
function(req, res) {
res.redirect('/');
}); Documentation
Examples
LicenseCopyright (c) 2012-2022 Jared Hanson <https://www.jaredhanson.me/> |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论