【问题标题】:PassportJS in Nodejs never call the callback functionNodejs 中的 PassportJS 从不调用回调函数
【发布时间】:2013-11-04 18:49:32
【问题描述】:

我正在尝试使用 Passport 对 yammer 用户进行身份验证。

它可以通过 yammer 身份验证页面,我可以单击以允许访问,但该功能永远不会被调用。 (正如您在我的代码中看到的那样,我只想打印所有 accessToken、profile 但它从不打印出来。)

请帮帮我,我可能做得不好。

var express = require("express"); var app = express(); var 护照 = 要求(“护照”); var YammerStrategy = require("passport-yammer").Strategy 护照.使用(新 YammerStrategy({ 客户ID:“”, 客户秘密:“”, 回调地址:“/” }, 功能(访问令牌,刷新令牌,配置文件,完成){ process.nextTick(函数(){ console.log("策略"); 控制台.log(配置文件); console.log(accessToken); console.log(refreshToken); }); } )); app.get('/login', passport.authenticate('yammer')); app.listen(3000); console.log('监听 3000 端口');

【问题讨论】:

    标签: node.js passport.js yammer


    【解决方案1】:

    发生这种情况是因为您从未调用过护照done 回调,只需调用它

    passport.use(new YammerStrategy({
      clientID: "",
      clientSecret: "",
      callbackURL: "/"
      },
      function(accessToken, refreshToken, profile, done){
        console.log("strategy");
        console.log(profile);
        console.log(accessToken);
        console.log(refreshToken);
    
        done(null, profile);
      }
    ));
    

    而且因为您没有添加您的护照中间件:

    app.configure(function() {
      app.use(express.static('public'));
      app.use(express.cookieParser());
      app.use(express.bodyParser());
      app.use(express.session({ secret: 'keyboard cat' }));
      app.use(passport.initialize());
      app.use(passport.session());
      app.use(app.router);
    });
    app.get('/login', passport.authenticate('yammer'));
    app.listen(3000);
    console.log('Listening on port 3000');
    

    Read documentation

    【讨论】:

    • @A-letubby,通过此链接查看更新的答案并阅读文档passportjs.org/guide/configure
    • 好的,现在可以了。看看passport-yammer 的例子也是值得的。 github.com/jaredhanson/passport-yammer/blob/master/examples/… 还有一件事,我还是不明白“done(null,profile)”是干什么用的?在示例中,他们执行“return done(null,profile)”,但您的代码没有。
    • return 只是用来完成父函数的执行。 done 功能让护照知道用户是否已通过身份验证或在身份验证期间出现错误。它是错误第一个回调,因此错误作为第一个参数出现,用户数据作为第二个参数出现。在我的示例中,您将null 作为错误返回,profile 作为用户数据返回,请查看文档passportjs.org/guide/configure,尤其是验证回调部分
    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多