如何将数据从React Native传递到Passport.js FacebookTokenStrategy回调?

问题描述 投票:0回答:1

我试图将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()}`);            

任何帮助将是非常感激的。

node.js reactjs react-native passport.js passport-facebook
1个回答
0
投票

我通过添加 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);
      }
  );
© www.soinside.com 2019 - 2024. All rights reserved.