假设我有一个剧本像这样的 ,它采用了Passport身份验证策略与快速后端。 我将如何使用这个脚本实际上使API函数调用? 我没有看到链接项目的任何明确的实例文档,也可以找到Passport.js在任何文档 。 谢谢。
Answer 1:
我假设你知道如何使用的护照,你会弄明白什么是正确的Fitbit API端点(老实说,我不知道)。 说,让我给一个想法,可能会帮助您解决问题:
// An awesome npm module (https://github.com/mikeal/request)
var request = require('request');
//
//
//
// An express route.
app.get('/activities', function (req, res) {
if (req.user !== null) {
// User is authenticated.
getUserActivities(req.user.id, res);
} else {
// Redirect to login the user isn't authenticated.
res.redirect('/login');
}
});
// This function will make API calls to Fitbit
// using the User ID we got from the PassportJS
// authentication process.
function getUserActivities(id, res) {
// It will request from Fitbit User activities.
request('https://api.fitbit.com/1/user/'+ id +'/activities/',
function (error, response, body) {
if (!error && response.statusCode == 200) {
// If everything goes well.
return res.send(body);
} else {
// If something wrong happens.
return res.send(error);
}
);
}
这个例子的目的是告诉你,你需要使用PassportJS获得fitbit用户ID, 然后使用该ID来进行API调用来fitbit。
Answer 2:
Passport用户序列化完成后,每个请求具有user
字段,其中包含传递给信息done
回调passport.serializeUser
方法。
app.get('/userID', function (req, res) {
if (req.isAuthenticated()) {
res.json(req.user.id);
}
res.redirect('/login');
}
此外,您还可以访问session
app.get('/auth/fitbit/callback',
passport.authenticate('fitbit', { failureRedirect: '/login' }),
function(req, res) {
req.session.loggedInAt = Date.now();
res.redirect('/');
});
信息存储在session
中的所有请求提供,而用户通过认证
app.get('/someroute', function (req, res) {
// call to another service
var url = 'http://superservice.com/' + req.user.id + '/' + req.session.loggedInAt
http.get(url, function (_res) {
res.send(_res.data)
});
});
文章来源: Need help on how to actually use Passport authentication strategy in Express