问题标签 [passport-google-oauth]

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 回答
555 浏览

node.js - 登录后如何将用户带回原始URL?

我正在使用 PassportJS 在 NextJS 应用程序上通过 Google 对用户进行身份验证。到目前为止,我的身份验证部分工作正常。但是,Google 坚持要我向它注册一个回调 URL或其列表,并在登录成功后仅将用户重定向到其中一个。

我想要的是让它充满活力。因此,如果用户在https://www.schandillia.com/blog/somepage上并通过 Google 按钮点击登录,他首先会转到https://www.shandillia.com/auth/google,然后转到https: //accounts.google.com/signin/oauth/oauthchooseaccount。在这里,一旦他成功登录(甚至不成功),我希望他被带回https://www.schandillia.com/blog/somepage,而不是一些静态重定向页面。我的 repo 位于https://github.com/amitschandillia/proost/tree/master/web并且有问题的脚本如下:

/server/server.js

/routes/auth-routes.js

/config/passport-setup.js

然后,按照 NextJS 世界的惯例,我将我的页面定义为/pages/. 登录功能本身是通过Navbar.jsx组件在所有页面上可用的模式对话框而不是专用登录页面。

那么,如何将当前 URL 值从客户端/config/passport-setup.js动态传递给脚本?此外,Google 是否对可以添加到回调列表的 URL 数量有限制?

PS:我尝试使用universal-cookie在以下位置设置cookie(如nm在下面的评论中所建议)pages/index.jsx

const cookies = new Cookies();

然后在中设置值componentDidMount()

这成功地设置了cookie。然后要检索相同的内容,我在我的中执行以下操作server.js

该系统运行良好。客户端路由期间除外。由于服务器仅在页面最初加载或刷新时才被调用,因此当路由严格发生在浏览器上时,它无法接收 cookie。任何解决方法?

0 投票
1 回答
823 浏览

node.js - 尝试在 Graphql-Yoga 服务器中使用 Google Oauth2 和 Passportjs

我以为我正确地遵循了所有文档来实现这一点,但是,我收到了一个TokenError: Bad Request错误消息invalid_grant

我的服务器非常简单:

这是我在云平台中设置 Google 的方式有问题吗?我不知道我哪里出错了。我的回调设置正确。我不知道在哪里寻找错误?

另一件令人困惑的事情是 GoogleStategy 是控制台记录用户配置文件和返回的访问令牌。我猜测当回调路由尝试验证来自 URL 的代码时会出现错误。谁能给我指出一个方向,以便更好地解决这个问题?提前致谢。

0 投票
1 回答
7029 浏览

node.js - ECONNREFUSED 127.0.0.1:3000 在 TCPConnectWrap.afterConnect [as oncomplete] 错误:'ECONNREFUSED',

我正在模拟(facebook / google)策略上运行一些测试,但是当我一个一个运行这些测试时我遇到的问题是它正在运行但是当我同时运行它们时它们在第一次测试后它们不工作,应用程序的连接立即失败.

我尝试以不同的描述运行,但没有任何改变我使用 nodejs 和 @passport-next/passport-mocked 作为依赖项来帮助我模拟这些策略。

这是我的测试文件

这是我的护照配置

这是我的应用索引

这些是我的路线

我希望我的测试结果采用json格式,但是现在当我以null运行结果并且出现 git 错误时

我得到的错误

0 投票
2 回答
418 浏览

node.js - 什么时候passport.js失败重定向被击中?

我一直在使用 passport.js 来执行 OAuth。因此,成功验证后重定向 URI 会被命中,但是对于失败的情况。我无论如何都无法触发它,

在以下情况下会发生什么?

1. 当 google/twitter 或任何 OAuth 提供商打开他们的登录页面但用户完全没有响应/关闭浏览器窗口/时,我如何在超时后点击失败 URL/重定向 URL。

2. 没有任何取消按钮可以中止 Google OAuth 登录,我希望至少会调用失败。

基本上,我想知道的是,所有可能的用例/场景都会调用失败 URL 吗?

Google OAuth 重定向的示例代码,我相信所有 OAuth 提供者的失败场景都是相同的。

以上只是一个例子passport-google-oauth,我相信任何护照策略都是如此。

0 投票
1 回答
164 浏览

node.js - 如何在不从客户端(Vue)进行ajax调用的情况下从服务器(Node.js)获得jwt令牌

我正在尝试将基于谷歌的身份验证添加到我的应用程序中。这是我正在做的

  1. passport-google-oauth20在我的 express.js 服务器端使用护照谷歌策略模块
  2. 我创建了两个端点,第一个auth/google和第二个auth/google/callback是 google-Oauth 的回调 url
  3. 在策略定义中,我试图创建一个我想以某种方式发送给客户端的 jwt 令牌。
  4. 在客户端这是一个 vue 应用程序,我添加了 google 登录按钮,单击该按钮重定向到我在服务器中创建的端点,
  5. 之后,交换accessTokensscoped informations发生在服务器端(我也在其中生成 jwt 令牌)。但是我想知道在服务器上的身份验证成功后如何将访问令牌返回给客户端。

请注意,我不能进行 ajax 调用,因为它会引发cors问题。任何建议都非常感谢;

0 投票
1 回答
313 浏览

node.js - TypeError: next 不是函数时 io.use(passport.authenticate('google'))

我正在尝试将身份验证与 socket.io 的 io.use() 一起使用,正如他们在文档中提到的那样。他们似乎有一个io.use()函数调用的例子next(),但我得到了错误:

类型错误:next 不是函数

使用 使用io.use(passport.authenticate('google'))

更新

我知道文档显示我需要next作为参数传递。但是我不能通过下一个,因为该passport.authenticate()方法是由 passport.js 定义的,我没有在那里声明它(就像在文档中一样)。

我认为我可以使用的唯一选择是定义一个函数并passport.authenticate在其中使用。但我不确定这是否是正确的方法。如果我这样做,我可能还需要处理自定义回调。

0 投票
1 回答
1260 浏览

reactjs - 使用 Passport Google OAuth2 验证私有 React 路由

我目前正在开发一个使用带有 Passport.js 的 MERN 堆栈进行身份验证的应用程序,特别是 Google OAuth2 策略。我当前的应用程序具有简单的登录功能,可以从客户端重定向到 Google 同意页面并返回到服务器的重定向 url,然后应该重定向到客户端的主应用程序。我很确定这就是你在服务器端需要做的所有事情,现在我对如何在 React Router 端处理这个有点困惑。

所以首先,我的公共路由中有我的谷歌登录按钮,然后点击服务器中触发谷歌 OAuth 的端点

在服务器从localhost:5000/auth/google/redirect 重定向localhost:3000/protected之后,我相信它会回到触发 React 路由器的 App.js

这就是事情变得有点混乱的地方。所以我认为它会在 componentDidMount() 之前先渲染,所以经过身份验证的状态仍然是 false,所以 PrivateRoute 将客户端重定向回 l​​ocalhost :3000/并渲染公共路由。毕竟,运行 componentDidMount() 并最终获取用户并且现在身份验证是真的,但是现在为时已晚,因为客户端已经重定向到localhost:3000/所以它不再访问 PrivateRoute。

如果有人想知道,这是我的 PrivateRoute 组件:

到目前为止我所做的:

  • 使用 componentWillMount() - 没有区别,而且我相信这很快就会被弃用
  • 使用具有isAuthenticatedlogin()logout()成员的全局身份验证对象。我在我的公共组件中创建了该对象的一个​​实例,并添加了onClick={auth.login}以及 href。但是,onClick 在 href 浏览器重定向之前首先运行,因此它会首先尝试获取用户(即使还没有任何设置),所以isAuthenticated不会设置为 true

提前致谢!

0 投票
1 回答
390 浏览

laravel - 在 laravel-passport-social-grant 包上获取 invalid_credentials

使用的包是:https ://github.com/coderello/laravel-passport-social-grant

我已经按照以下提供的教程进行了所有预期的更改: https ://medium.com/@hivokas/api-authentication-via-social-networks-for-your-laravel-application-d81cfc185e60

网址:

输出:

与邮递员一起使用的参数如下:

这里有什么问题?

0 投票
0 回答
146 浏览

javascript - 从弹出窗口获取数据

我正在通过 google sing in api 对我的用户进行身份验证。我打开弹出窗口window.open(),如下所示:

我的服务器对谷歌信息进行身份验证,然后使用 cookie 响应弹出窗口,如下所示:

如何在父窗口(主应用程序,而不是弹出窗口)中获取 JSON?

0 投票
1 回答
81 浏览

javascript - Passport JS 不会将新模式保存到数据库?

我正在尝试将 passport.js 与 GoogleStrategy 一起使用来授权用户使用我正在构建的 Web 应用程序。然后我想使用 mongoose 将用户存储在 MongoDB 中。

那是我对护照猫鼬的实施。从 Google 获取配置文件后,我会尝试将该用户的 displayName 和 googleID 存储在我想要保存到我的数据库中的用户架构中。我不确定我做错了什么,但是当我运行这个程序时,我看到所有console.log的输出到终端**except**,我希望有人可以帮助我解决这个问题。console.log(newUser+'was created');.then()