小编Alp*_*ani的帖子

在passport.js中动态指定OAuth策略的重定向网址的最佳方法是什么?

我已根据passportjs docs设置了我的facebook身份验证:

var passport = require('passport')
  , FacebookStrategy = require('passport-facebook').Strategy;

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "http://www.example.com/facebook/callback"
  },
  function(accessToken, refreshToken, profile, done) { ... });
  }
));

app.get('/login/facebook', passport.authenticate('facebook'))
   .get('/facebook/callback', passport.authenticate('facebook', {successRedirect: '/', failureRedirect: '/login'}));
Run Code Online (Sandbox Code Playgroud)

这一切都很好.但是,当我想在启动登录请求之前自动将用户重定向到用户所在的页面时,有些情况(例如令牌过期).所以我尝试通过登录请求(从客户端到服务器到Facebook并返回)检查查询字符串参数.但是我无法在callbackURL中看到指定它的方法.

此外,当我尝试将一些上下文参数硬编码到config callbackURL(例如:" http://www.example.com/facebook/callback?redir=lastUserPage ")时,我得到一个OAuth解析错误.有趣的是,Facebook确实对访问代码以及redir param做出了正确的响应,但它在OAUTH异常时失败了:

FacebookTokenError: Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request
   at Strategy.parseErrorResponse (C:\Sources\node_modules\passport-facebook\lib\strategy.js:198:12)
   at Strategy.OAuth2Strategy._createOAuthError (C:\Sources\node_modules\passport-facebook\node_modules\passport-oauth2\lib\strategy.js:345:16)
   at C:\Sources\node_modules\passport-facebook\node_modules\passport-oauth2\lib\strategy.js:171:43
   at C:\Sources\node_modules\passport-facebook\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:177:18
   at passBackControl (C:\Sources\node_modules\passport-facebook\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:124:9)
   at IncomingMessage.<anonymous> (C:\Sources\node_modules\passport-facebook\node_modules\passport-oauth2\node_modules\oauth\lib\oauth2.js:143:7) …
Run Code Online (Sandbox Code Playgroud)

oauth passport.js

6
推荐指数
1
解决办法
662
查看次数

标签 统计

oauth ×1

passport.js ×1