当 Passportjs 上使用 Google Auth 时,自定义回调从未被调用

2024-02-06

我尝试使用 PassportJS 登录 Google。但是当我使用自定义回调时,Google 策略从未调用回调。我究竟做错了什么?我的代码如下。

端点:

var router = express.Router();
router.get('/',
  passport.authenticate('google', { scope: [
    'https://www.googleapis.com/auth/plus.login',
    'https://www.googleapis.com/auth/plus.profiles.read',
    'https://www.googleapis.com/auth/userinfo.email'
  ] }
));

router.get('/callback', function (req, res) {
  console.log("GOOGLE CALLBACK");
  passport.authenticate('google', function (err, profile, info) {
    console.log("PROFILE: ", profile);
  });
});

module.exports = router;

护照:

passport.use(new GoogleStrategy({
          clientID: config.GOOGLE.CLIENT_ID,
          clientSecret: config.GOOGLE.CLIENT_SECRET,
          callbackURL: config.redirectURL+"/auth/google/callback",
          passReqToCallback: true
          },
          function(request, accessToken, refreshToken, profile, done) {
            process.nextTick(function () {
              return done(null, profile);
            });
          }
        ));

GOOGLE CALLBACK 日志已打印,但 PROFILE 日志从未打印。

提前致谢。


这是一个棘手的情况...

The passport.authenticate方法,返回一个函数。

如果你以这种方式使用,你必须自己调用它。

Look:

router.get('/callback', function (req, res) {
  console.log("GOOGLE CALLBACK");
  passport.authenticate('google', function (err, profile, info) {
    console.log("PROFILE: ", profile);
  })(req, res); // you to call the function retuned by passport.authenticate, with is a midleware.
});

或者,你可以这样做:

router.get('/callback', passport.authenticate('google', function (err, profile, info) {
    console.log("PROFILE: ", profile);
  }));

passport.authenticate是一个中间件。

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 Passportjs 上使用 Google Auth 时,自定义回调从未被调用 的相关文章

随机推荐

  • 每次组件变得可见时发生的事件

    Angular2 中有没有办法在我的组件变得可见时触发事件 它被放置在选项卡控件中 我希望在用户切换时收到通知 我希望我的组件能够触发一个事件 我最终所做的 这不是很漂亮 但在我没有更好的方法时有效 是使用ngAfterContentChe
  • Ruby:获取哈希中的所有键(包括子键)

    让我们得到这个哈希 hash a gt 1 b gt c gt 3 hash get all keys gt a b c 我怎样才能获得所有钥匙hash keys仅返回 a b 这将为您提供任意级别嵌套的所有键的数组 def get em
  • 如何更改 Angular CLI 图标

    如何更改 Angular CLI 设置的默认图标 我尝试了很多方法 但它总是显示 Angular 徽标作为图标 即使我已经删除了该图标 src 文件夹中的 favicon ico 它仍然显示 但我不知道它是从哪里加载的 我已将该图标替换为另
  • 可以让bindService()阻塞吗?

    我有一个使用远程服务的 Android 应用程序 我使用以下命令绑定到它bindService 这是异步的 在绑定服务之前 该应用程序是无用的 因此我想简单地等到绑定完成后再启动任何活动 有没有办法先绑定服务onCreate or onRe
  • 如何更新 NDB 模型的架构 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我已经看到了这个问题的解决方案App Engine 的较旧 DB 数据存储区 API https cloud google com appe
  • Scala 类型参数括号

    I know trait Foo T means T是参数化类型 但有时我能看到trait Foo T1 T2 or trait Foo T1 T2 R 我找不到任何地方描述类型括号内多种类型的含义 您能指出这种情况下的用法吗 据我推测 F
  • 会话恢复后 get_variable() 不起作用

    我尝试恢复会话并调用get variable 获取类型的对象 tf Variable 根据这个答案 https stackoverflow com a 42735208 1292688 并且它无法找到该变量 重现该案例的最小示例是 如下 首
  • 每次服务器从 Windows Server 2012 R2 重新启动时,安装的程序都会自动删除 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在 C 中创建了一项服务 并为其创建了安装程序 安装程序工作正常 并且服务已正确安装在服务器上 但这里有一个问题 当服务器重新启动时
  • 根据搜索输入过滤 ng-repeat

    我有以下 html div div div div
  • 使用 iTextSharp 从 PDF 中提取嵌入的 XML (C#)

    我需要提取嵌入的 XML 数据破产法庭档案 http ebn uscourts gov documents XML使用 C 在 PDF Reader 中 该文件看起来像典型的法庭文件 在记事本中 XML 隐藏在文本中 我尝试使用提取文本th
  • 抑制 javac 警告“...是内部专有 API,可能会在未来版本中删除”

    当我使用 JDK 1 7 0 在 OS X 上编译 Spring JDBC 源代码时 收到以下警告 warning CachedRowSetImpl is internal proprietary API and may be remove
  • const 指针(与指向 const 对象的指针相反)有什么用?

    我经常使用指向 const 对象的指针 就像这样 const int p 这仅仅意味着您无法更改整数p指向通过p 但我也看到了对 const 指针的引用 声明如下 int const p 据我了解 这意味着指针变量itself是常量 你可以
  • 当分支存在时,有没有办法优雅地改变 git 分支的历史记录?

    我想使用 git 更正一些无效的作者信息过滤器分支 http coffee geek nz node 22723特征 问题是分支存在分叉 从而导致不同步 是否有办法将对提交日志的更改合并到分支中 重写历史记录会创建新的提交 并且无法从外部存
  • 使用移动设备时 MathJax 方程不适合窗口宽度

    在我的博客文章 用 Hugo 编译 中我有本节 https oren0e github io 2020 04 27 mab thompson mathematical proof for beta distribution being co
  • 在Python中,如何将列表分成大小均匀的块,从前一个块的最后一个元素开始?

    转换列表的最Pythonic方法是什么 mylist 0 1 2 3 4 5 6 7 8 分成大块n始终从前一个块的最后一个元素开始的元素 最后一个块的最后一个元素应该与第一个块的第一个元素相同 以使数据结构循环 喜欢 0 1 2 3 3
  • CMakeLists.txt CMAKE_PREFIX_PATH 处出现 CMake 错误

    我已经从以下网站下载了人脸分析SDK的源代码http face ci2cv net http face ci2cv net 现在我正在努力让它运行 我下载了所有必要的软件并按照安装说明进行操作 当我尝试执行 cmake options 时出
  • 为 JS 修改 Sublime Text 2

    我几乎是 Mathematica 之外的编程初学者 我使用 Sublime Text 2 主要需要用 JS 进行编码 并且我想使用与首选项中已存在的颜色主题不同的颜色主题 例如 我想使用 我尝试安装 Eclipse 尚未成功 我使用的是装有
  • java中的SSH客户端和服务器

    哪些流行的库可用于在 java 中实现自定义 SSH 客户端和服务器 我知道 Jsch http www jcraft com jsch http www jcraft com jsch 是一个流行的java ssh客户端 是否有良好且安全
  • 匹配和删除字符串中的 Twitter 主题标签

    仅当主题标签位于字符串末尾以外的任何位置时 我才需要从主题标签中删除 字符 例子 这个月我要去 迪士尼 WDW 这个月我要去 迪士尼 WDW 奥兰多 这个月我要去 迪士尼 WDW 奥兰多 它们需要转换为 这个月我要去迪士尼 这个月我要去迪士
  • 当 Passportjs 上使用 Google Auth 时,自定义回调从未被调用

    我尝试使用 PassportJS 登录 Google 但是当我使用自定义回调时 Google 策略从未调用回调 我究竟做错了什么 我的代码如下 端点 var router express Router router get passport