为什么passport-twitter 需要会话支持

Bog*_*rai 5 authentication twitter session passport.js express-session

我正在使用护照进行 facebook、google、github、twitter 身份验证。使用 facebook、google、github 进行身份验证正在执行教程中的编写方式。只有推特回我消息:

500 Internal Server Error: OAuth authentication requires session support. Did you forget to use express-session middleware?
Run Code Online (Sandbox Code Playgroud)

然后我添加了 express-session 中间件(见下文),我的问题就消失了。

import * as expressSession from "express-session";

app.use(expressSession({
    secret: strategyOptions.session.secret,
    resave: false,
    saveUninitialized: true
}));
Run Code Online (Sandbox Code Playgroud)

所以我有3个问题:

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

Lea*_*ues 6

1)为什么推特认证需要会话支持?

  • 推特身份验证需要requestTokenStore在交换之前存储令牌。默认情况下,它SessionRequestTokenStore来自passport-oauth1.

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

  • twitter 身份验证是在您的后端运行的中间件,因此它了解您的会话。

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

  • 谷歌、Facebook、Github 使用passport-oauth2,不需要requestTokenStore(会话)。