我试图将deviceID等数据传递给Passport.js的FacebookTokenStrategy回调。
我尝试使用 req._toParam
但它不能用,好像已经废弃了。
服务器路由器文件
authRouter.post(
'/facebook/token',
(req, res, next) => {
req._toParam = req.user.uniqueDeviceID;
passport.authenticate('facebook-token')(req, res, next)
},
(req, res) => {
res.send(req.user);
}
);
服务器护照策略文件
passport.use(
new FacebookTokenStrategy(
{
clientID: keys.facebookAppID,
clientSecret: keys.facebookAppSecret
},
async (req, accessToken, refreshToken, profile, done) => {
console.log(req._toParam);
//how to pass react-native-device-info deviceID to this callback?
}
)
)
反应式本地客户端
const res = await server.post(`/auth/facebook/token?access_token=${tokenData.accessToken}&uniqueDeviceID=${DeviceInfo.getUniqueId()}`);
任何帮助将是非常感激的。
我通过添加 passReqToCallback: true
在FacebookTokenStrategy中把请求传递给策略回调,并使用 req.query 检索查询字符串数据 uniqueDeviceID=${DeviceInfo.getUniqueId()}
.
passport.use(
new FacebookTokenStrategy(
{
clientID: keys.facebookAppID,
clientSecret: keys.facebookAppSecret,
passReqToCallback: true
},
async (req, accessToken, refreshToken, profile, done) => {
console.log(req.query.uniqueDeviceID);
}
)
);
从而跳过了从路由器转发请求到策略回调的需要。
authRouter.post(
'/facebook/token',
passport.authenticate('facebook-token'),
(req, res) => {
res.send(req.user);
}
);