gpt4 book ai didi

oauth - 在passport.js 中为OAuth 策略动态指定重定向URL 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 16:09:01 28 4
gpt4 key购买 nike

我已经根据passportjs docs设置了我的facebook auth:

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'}));

所有这些工作正常。但是,在某些情况下(例如 token 过期),我想在启动登录请求之前自动将用户重定向到用户所在的页面。所以我试图通过登录请求(从客户端到服务器到 facebook 再返回)来探测查询字符串参数。但是我看不到在 callbackURL 中指定它的方法。

此外,当我尝试将一些上下文参数硬编码到配置 callbackURL(例如:“ http://www.example.com/facebook/callback?redir=lastUserPage”)时,我收到了 OAuth 解析错误。有趣的是,Facebook 确实使用访问代码和 redir 参数正确响应,但它因 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)
at IncomingMessage.emit (events.js:117:20)
at _stream_readable.js:943:16
at process._tickCallback (node.js:419:13)

请注意,我之前使用 WIF 进行了这项工作。我没有看到通过 OAuth 过程传递附加查询字符串参数的任何安全问题..

知道我怎么能克服这个吗?

最佳答案

我不确定如何做您所要求的,但对于您想要的最终目标,您可以:

  • 在验证之前保存 cookie
  • 验证用户
  • 在生成的回调页面上,检查 cookie 并重定向(如果存在)。

  • 这不会同样容易吗?

    关于oauth - 在passport.js 中为OAuth 策略动态指定重定向URL 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852317/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com