提问人:Arun Lazer 提问时间:11/8/2023 最后编辑:Arun Lazer 更新时间:11/9/2023 访问量:34
使用 superfaceai / passport-twitter-oauth2 时无法验证授权请求状态
Getting Unable to verify authorization request state while using superfaceai / passport-twitter-oauth2
问:
我只是按照 superfaceai / passport-twitter-oauth2
分享的例子 https://github.com/superfaceai/passport-twitter-oauth2/blob/main/examples/basic-usage/server.js
当我实现 OAuth 2.0 身份验证的代码时,我遇到了一个持续存在的问题。每当我尝试登录或授权我的应用程序时,它都会始终将我重定向到指定的“failureRedirect”URL。在此重定向的同时,还显示一条错误消息,内容为:“无法验证授权请求状态。有关错误消息,请参阅随附的图片
const passport = require('passport');
const { Strategy } = require('@superfaceai/passport-twitter-oauth2');
const session = require('express-session');
const TWITTER_CLIENT_ID = "xxxxxxxxxxxxxxxxx"
const TWITTER_CLIENT_SECRET = "xxxxxxxxxxxxxxxxx"
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (obj, done) {
done(null, obj);
});
// Use the Twitter OAuth2 strategy within Passport
passport.use(
new Strategy(
{
clientID: TWITTER_CLIENT_ID,
clientSecret: TWITTER_CLIENT_SECRET,
clientType: 'confidential',
callbackURL: `http://127.0.0.1:6002/social/twitter/callback`,
},
(accessToken, refreshToken, profile, done) => {
console.log('Success!', { accessToken, refreshToken });
return done(null, profile);
}
)
);
const app = express();
app.use(passport.initialize());
app.use(
session({ secret: 'keyboard cat', resave: false, saveUninitialized: true })
);
app.get(
'/social/twitter',
passport.authenticate('twitter', {
scope: ['tweet.read', 'users.read', 'offline.access'],
})
);
app.get(
'/login',
function (req, res) {
const sessionData = JSON.stringify(req.session, undefined, 2);
res.end(
`<h1>Authentication Failed</h1> User data: <pre>${sessionData}</pre>`
);
}
);
app.get(
'/social/twitter/callback',
passport.authenticate('twitter',
{failureRedirect:'/login',
failureMessage:true
}
),
function (req, res) {
const userData = JSON.stringify(req.user, undefined, 2);
res.end(
`<h1>Authentication succeeded</h1> User data: <pre>${userData}</pre>`
);
}
);
app.listen(6002, () => {
console.log(`Listening on http://127.0.0.1:6002`);
});
[![enter image description here][1]][1]
*[1]: https://i.stack.imgur.com/rTZut.png*
答:
0赞
Arun Lazer
11/9/2023
#1
我发现的问题是,我在 superfaceai/passport-twitter-oauth2 上使用了 auth1.0 客户端可信度。另外,我尝试了这个,它就像一个魅力 https://github.com/superfaceai/twitter-demo/。
评论
0赞
Tyler2P
11/9/2023
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。
0赞
Arun Lazer
11/14/2023
当然@Tyler2P会将其添加为答案
0赞
Chou Chris
12/20/2023
#2
我遇到了同样的问题,最后发现原因是请求twitter令牌接口不工作。原因是我挂断了VPN,但是VPN不是全局的,所以NodeJS无法访问twitter界面,就出现了这个问题。最后,我连接了全球VPN,完美通过。这是我的情况。我希望它有所帮助
评论