session - 为什么 Passport-twitter 需要 session 支持

标签 session authentication twitter passport.js express-session

我正在使用 passport 进行 facebook、google、github、twitter 身份验证。 facebook、google、github 的身份验证在 tutorial 中如何执行被写了。仅在 Twitter 上回复我消息:

500 Internal Server Error: OAuth authentication requires session support. Did you forget to use express-session middleware?

然后我添加了快速 session 中间件(如下所示),我的问题就消失了。

import * as expressSession from "express-session";

app.use(expressSession({
    secret: strategyOptions.session.secret,
    resave: false,
    saveUninitialized: true
}));

所以我有 3 个问题:

  1. 为什么 Twitter 身份验证需要 session 支持?
  2. 我猜只有我的后端和前端知道 session 。 Twitter 如何知道我的 session ?
  3. 为什么 Google、Facebook、Github 不需要 session 支持?

最佳答案

1) 为什么 Twitter 身份验证需要 session 支持?

  • twitter 身份验证需要一个 requestTokenStore 来在交换之前存储 token 。默认情况下,它是来自 passport-oauth1SessionRequestTokenStore

2)我猜测只有我的后端和前端知道 session 。 Twitter 如何知道我的 session ?

  • Twitter 身份验证是一个在您的后端运行的中间件,因此它知道您的 session 。

3) 为什么 Google、Facebook、Github 不需要 session 支持?

  • Google、Facebook、Github 使用 passport-oauth2,不需要 requestTokenStore( session )。

关于session - 为什么 Passport-twitter 需要 session 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44071555/

相关文章:

session - 在 Express.js 中使用 Session MemoryStore 没有定义 req.session

java - 管理同一台计算机上 Play 框架服务器的多个实例的 session 详细信息

authentication - 为每种客户端应用程序发出应用程序 ID

authentication - 没有密码的NTLM代理?

javascript - 当用户在应用程序中浏览 Twitter 内部时如何检测页面?

python - 推特流媒体 API - urllib3.exceptions.ProtocolError : ('Connection broken: IncompleteRead

node.js - 如何从 NodeJS 将 session 存储在 MongoDB 中?

session - RESTful 后端的前端框架

authentication - 为什么 NTLM 不能双跳?

javascript - 自动播放嵌入式 Twitter 视频