问题标签 [passport-google-oauth2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
92 浏览

node.js - 护照谷歌:为什么回调中的 sessionID 不同?

亲爱的,

护照谷歌周围有很多例子,但应该有一些我错过的东西。我知道我的问题可能被标记为“可能重复”,但很抱歉我找不到答案,或者他们都没有解决我的问题。

用户单击客户端上的 href 链接(在https://localhost:3000上运行),调用服务器上的 googleauth 路由(在https://localhost上运行)。

在服务器端,passport 进程运行良好,callbackUrl 在服务器端 /googleauth/redirect。

然后在这个回调中,我可以将重定向硬编码为“ https://localhost:3000 ”。效果很好。

但我不想要这个。我希望服务器从客户端捕获初始 url(因此https://localhost:3000),将其保留在会话中,然后在重定向中使用此信息。

在 google auth 路由中,我在调用 passport.authenticate 之前将 toRedirect 变量设置到会话中,感谢中间件。

然而,一旦谷歌进程完成(选择谷歌帐户并确认访问用户数据),回调​​中的 sessionID 不同,因此重定向的 url 未定义......当然远程地址不再是客户端一,但谷歌身份验证API一...

那么,伙计们,您是如何将 google 身份验证结果发回给您的客户的?

这是代码

应用程序.js

auth.js

谷歌路线

0 投票
4 回答
1224 浏览

reactjs - 使用passport-google-oauth20在快速反应应用程序中谷歌登录后重定向问题

我有 express backend 和 create-react-app2 作为 frontend ,我也在使用 setupProxy 。现在我已经为谷歌登录配置了应用程序,但是登录后我没有正确重定向到索引页面。这是 console.developer.google.com 中的 google oauth 设置

在此处输入图像描述

我正在使用护照谷歌 oauth20 进行身份验证:这是我的护照文件:

这是我的路线:

这是我的 setupProxy 文件:

我被重定向到以下 URL:

而不是http://localhost:5000/auth/google/callback

0 投票
0 回答
323 浏览

node.js - 将 google 身份验证添加到 Node REST API

我想创建一个后端 API,我应该能够允许用户通过 Google/Linkedin/Email 登录。我需要将其创建为 API 而不是服务器渲染的应用程序。我可以使用jsonwebtokenNodeJs 中的包或使用 passportJS 来制作电子邮件。但是如何使用所有三种身份验证方法在 ExpressJS 中启用 Google 登录/LinkedIn 登录和受保护的路由?

我该怎么做?我无法使用 Node REST API 找到好的资源。

0 投票
1 回答
1894 浏览

node.js - Node + Express 应用程序中的 Passport + Google 令牌不断向邮递员的尝试抛出“未经授权”,令牌很好并且手动验证

我有一个使用 Node + Express + Passport 构建的后端 REST API,我正在尝试使用谷歌访问令牌进行身份验证。我正在使用这种策略。

我在 github 上查看了包的文档和问题,但没有任何东西可以解决这个问题。

我已经验证了访问令牌:

https://www.googleapis.com/oauth2/v1/tokeninfo?idToken使用 id 令牌和https://www.googleapis.com/oauth2/v1/tokeninfo?acessToken访问令牌,两者都是有效的,但它们都不起作用。我已经双重检查了我在后端使用了正确的 clientID 和 secret,在前端我从中获取了令牌。

以下是相关代码:

我在顶部导入如下:

该应用程序不会抛出任何类型的错误。

我在创建策略的地方添加了console.log——当我从邮递员那里开火时,没有记录任何内容。当我从有角度的前端发射时——它会记录数据并发射。

0 投票
0 回答
307 浏览

javascript - 如何从护照回调中提取其他 API 范围?

我想通过passport-google-oauth20策略获取使用 Passport.js 的用户的生日。我从哪里得到这个额外范围的响应以及如何提取这些信息?

我在从用户那里提取个人资料和电子邮件方面取得了成功,但我尝试的所有其他范围似乎都找不到它返回的位置。我正在使用Google Identity Platform中的一些范围(更具体地说,是 People API,我已经从 Google Cloud Platform 激活了它)并且它们没有出现在 Passport 策略回调中(仅个人资料和电子邮件)。

这是我设置护照并检查返回的内容

在我的路线中,我声明了范围并重定向用户

我的 node 和 npm 版本目前是:

我的包版本如下:

据我了解,我应该能够使用 Passport 检索个人资料、电子邮件和 openid 以外的更多信息,并且我知道我需要获取我想要激活的范围的 API。我不明白的是如何在回调函数中从该 API 检索信息或如何检索该信息。

0 投票
1 回答
485 浏览

node.js - 使用 Passport,如果我使用令牌进行身份验证,序列化用户的目的是什么?

我将passport-google-oauth20其用作我的应用程序的唯一身份验证形式。一切似乎都很好,我可以使用verify回调护照提供的身份验证用户并将他存储在数据库中。

在这个应用程序中,我只会使用 google 对用户进行身份验证并检查他是否存在于数据库中。我不会向谷歌提出更多请求,也不会从谷歌获取更多信息。

我注意到护照的回调函数背后发生了很多神奇的事情。我对如何serializeUserdeserializeUser工作有一个模糊的理解,但我不确定什么时候有必要。

护照提供的回调函数在localStorage上设置了一个JWT,所以即使我设置{ session: false }了重定向选项,我还需要序列化用户吗?

这是一些清除问题的代码

以下是路线:

我能够获得个人资料和我需要的所有信息。我还需要序列化用户吗?

0 投票
2 回答
857 浏览

node.js - 护照谷歌 oauth2 与护照谷歌 oauth20 包

这两个包看起来非常相似:

http://www.passportjs.org/packages/passport-google-oauth2/ http://www.passportjs.org/packages/passport-google-oauth20/

是一个取代另一个还是它们用于不同的目的?Google 身份验证的新手,仍在尝试使其正常工作。

0 投票
1 回答
1570 浏览

javascript - Passport Google 策略 - passport.use 回调何时运行?回调URL?

我正在使用 Passport 并研究Google OAuth 2 strategy。我很难理解流程。

这是官方文档中的代码:

然后是路线:

这是我对流程的理解。用户单击按钮以在浏览器上使用 google 登录。请求被发送到/auth/google。哪个电话passport.authenticate。从那里,谷歌处理一些事情,一旦用户允许我们访问他们的谷歌账户,好吧,这就是我不理解的部分。

下一步是什么?Google 似乎会向callbackURL我们提供的内容发送回复。但在这种情况下,回调何时passport.use运行?该回调正在接受accessToken,refreshTokenprofile,因此似乎是接收来自 Google 的响应,而不是callbackURL.

0 投票
1 回答
2109 浏览

node.js - OAuth2 登录后重定向到前端(在不同的 URL 上)

我正在尝试按如下方式设置我的应用程序:

  1. Angular 7 前端,服务于http://localhost:4200
  2. Express 后端,服务于http://localhost:3500
  3. 用于 OAuth2 身份验证的护照库

我正在从服务器端(Express / Node.js)设置 OAuth2 流。在从前端单击登录按钮时,请求被发送到服务器,该服务器被重定向到谷歌以询问用户凭据/权限等。

我的回调 URL 是:http://localhost:3500/auth/callback

成功登录后,重定向回前端 URL 的好方法是什么,即http://localhost:4200/?由于回调 URL 在服务器端

0 投票
2 回答
2196 浏览

node.js - 无法使用护照和谷歌 oauth 策略进入谷歌登录页面

我正在尝试使用 Passport 让用户能够使用他们的 Google 帐户登录 Web 应用程序,但我似乎无法让我的登录路径 /auth/google 甚至重定向到 Google 登录页面. 我的其他路线有效,我的控制台没有任何错误,但是当我转到 localhost:5000/auth/google 时,页面只是挂起并最终给出“localhost 拒绝连接”错误(我假设之后它已超时)。

知道会发生什么吗?我已经在另一个应用程序中成功地使用了基本完全相同的代码——我知道我还没有为完全登录设置大部分脚手架,但我认为它至少应该在此时加载谷歌登录页面。

index.js

这是完整仓库的链接: https ://github.com/olliebeannn/chatterpod