问题标签 [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 投票
2 回答
1565 浏览

javascript - 使用 google-passport-oauth 登录后 req.user 未定义

在我使用谷歌账户成功登录后,在回调请求中,req.user设置为正确的用户并且req.isAuthenticated()为真。伟大的!

但是,任何后续请求都将具有req.user未定义。不管我做什么。

passport-google-auth2passport-google-auth都会出现问题。

这就是我的index.js样子:

这就是它的googleStrategy样子:

这是我的auth路由器的样子:

我做错什么了吗?

0 投票
2 回答
1160 浏览

sails.js - 使用 Passportjs 的 Google 登录未通过身份验证

我正在使用带有 Passport 的 Sails 进行身份验证。我正在使用 passport-google-oauth(OAuth2Strategy) 和 passport-facebook 来启用 Google 登录。

我不太精通 Passport,如果这是一个菜鸟问题,请原谅我。我已经通过 Facebook 设置了登录,它工作得很好。使用谷歌,我在允许访问应用程序后确实收到了一个授权码,但我最终没有通过身份验证。我猜同样的代码应该适用于 Facebook 和 Google,因为这些策略都基于 oauth2。

我什至不确定要分享什么代码,因为我使用的是来自sails-generate-auth 的自动生成的代码,但是如果还有什么我可以分享的,请告诉我。

关于为什么会发生这种情况的任何想法?该应用程序是本地托管的,但这不太可能成为问题,因为无论如何我都进入了授权阶段。

0 投票
1 回答
5555 浏览

javascript - Passport-Google-OAuth 回调在 Web 服务中使用时不起作用

我在 Node.js Web 服务项目中使用过 Passport-Google-OAuth。我正在使用 OAuth2Strategy。

我使用的过程是我调用网络服务方法从他的 Gmail 帐户验证用户。最初,我提供通过调用 Passport-google-OAuth 收到的 Raw HTMl。哪个工作正常。

然后我使用有效的 Gmail 帐户登录。一旦回调 URL 被谷歌调用,服务器就会进入无限循环,并在固定的时间间隔后一次又一次地调用回调 URL。

我的 Google Passport 策略配置是这样的:

然后我从服务项目的端点调用 Passport:

回调 URL 包含以下代码,我将在其中以 JSON 格式将返回的用户 Google 帐户详细信息发送到最初访问 Web 服务的客户端。

在日志中,我收到“Google 回调:未定义 || 未定义”。

我正在禁用会话,因为这将是 API 服务器向各种客户端提供数据。

我不知道我在做什么错误。请指出在 API(Web 服务)服务器中使用 Passport-Google-OAuth(OAuth2Strategy) 的任何资源或示例。我是否需要遵循其他方式。提前感谢您的帮助。

0 投票
3 回答
17706 浏览

node.js - 缺少必需的参数:redirect_uri 和 passport-google-oauth

passport-google-oauth: "0.2.0"在我的 MEAN Stack 应用程序中使用(可在此处找到:https ://github.com/jaredhanson/passport-google-oauth)。当我运行应用程序并尝试使用 Google API 登录时,会返回此错误

  1. 那是一个错误。

错误:invalid_request

缺少必需参数:redirect_uri

请求详细信息范围= https://www.googleapis.com/auth/plus.login response_type=code redirect_uri= client_id=xxxx-xxxx.apps.googleusercontent.com

重定向参数在这里 passport-init.js

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;

var GOOGLE_CLIENT_ID = "xxx-xxx.apps.googleusercontent.com"; var GOOGLE_CLIENT_SECRET = "xxxx";

passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackUrl: " http://127.0.0.1:3000/auth/google/oauth2callback " }, function(accessToken, refreshToken, profile, done){ done(空,配置文件);}));

路线在这里authenticate.js

router.get('/google', passport.authenticate('google', { scope: [' https://www.googleapis.com/auth/plus.login ']}), function (req, res){ } );

router.get('/google/oauth2callback', passport.authenticate('google', { successRedirect: '/auth/success', failureRedirect: '/auth/failure' }) , function (req, res) {res.redirect ('/');});

我确定我遗漏了一些简单的东西,但我不知道在这个问题中添加什么可以为您提供最佳信息。请询问,我会尽我所能回答你。这就是相关数据的感觉。

有趣的是,如果我手动添加 callbackUrl,那么一切都会很好。我可以很好地访问 Google API。然后我可以选择“允许”或“拒绝”该请求。

0 投票
1 回答
1004 浏览

node.js - OAuth Google 回调抛出错误“与本地主机的连接尝试被拒绝”

我是新手,node.js我正在尝试OAuth 2.0使用.Googlepassport.js

我有我的clientID,clientSecretAuthorized Redirect URLs来自谷歌开发者控制台。回调 URL 类似于http://localhost:portNumber/foo/bar/callback,当我从我的机器上运行它时,应用程序可以完美运行。

当我尝试使用公共 IP 地址通过 Internet 访问它时,就会出现问题。我可以访问我的网站,但是一旦我允许我的应用程序Google+使用OAuth它访问我的个人资料,就会出现错误connection attempt to localhost was rejected。它为我的回调 URL 提供了 ERR_CONNECTION_REFUSED 错误。

我被卡住了,因为我现在没有要使用的域来代替localhost.

如果我的问题含糊不清,请原谅我,我们将不胜感激。

PS:我已经转发了我的端口。

0 投票
1 回答
575 浏览

passport.js - 如何知道用户是否使用passport.js通过google或facebook登录?

很容易找到用户是否登录。但是如何检查用户是否使用特定的 oauth 客户端登录?前任。谷歌或脸书

0 投票
1 回答
110 浏览

passport.js - 如何使用 Passport 从 Google Plus 获取好友列表

我可以通过 Passport 获取 Facebook 好友列表:

我很好奇 Google Plus 是否有类似方式的方法?

我正在为策略使用“passport-google-oauth”模块。

谢谢

德里克

0 投票
0 回答
655 浏览

angularjs - 如何将 passport-google-oauth 与 Thinkster MEAN 教程集成?

我刚刚完成了 Thinkster MEAN Stack 教程,并希望将其改编为我自己的项目。我真的很想让用户用谷歌登录,所以我正在尝试使用 Passport 的谷歌策略。我已经用 npm 安装了 passport-google-oauth,我什至在可以正确验证的地方安装了它。

我被困在如何将经过身份验证的用户的 JWT 集成回 Angular 应用程序的其余部分。在下面的代码中,单击 Google 的“允许”后,我返回到我的本地主机应用程序,并在屏幕上看到我的 JWT 的 JSON。如何让 JWT 回到我的 Angular 身份验证服务以进入 localStorage?使用我的其他登录功能,我可以使用 .success() 回调;使用 Google,我的回调来自不同的域。我猜这一切的关键是让 Angular 应用程序处理 JSON,我只是不知道如何触发它。

非常感谢您提供的任何帮助!这是我的文件:

护照.js:

index.js(快速路由器):

angularApp.js auth 服务(localStrategy 登录的处理方式,供参考):

以及处理到 /login 的帖子的 index.js 路由器:

编辑 我想我可能已经找到了解决方案。我有一个 Google 回调将令牌作为查询字符串发送回我的登录页面。然后,在login我设置的状态下,我正在检查 enter if 是否$location.search().token已定义;如果是这样,我正在使用我的auth服务以这种方式将令牌保存到 localStorage 中。我可能可以通过一些额外的步骤来提高可靠性,但我认为这适用于现在。这仍然安全吗?我相信应该是这样,因为用户可以按原样进入 localStorage,但我想确保他们不能欺骗它或任何东西。

新的 index.js 路由器:

来自 angularApp.js 的 ui-router $state:

0 投票
1 回答
989 浏览

node.js - invalid_request with missing: 在 Google Oauth2 上使用 Google Passportjs 的范围

身份验证代码中出现了一个问题,该问题在今年年初之前一直运行良好,然后似乎在我几乎没有改变的情况下就崩溃了,我试图退回到以前的版本并找到原因,但没有运气。所以我正在寻求帮助来修复今天存在的代码。

我正在使用 nodejs v0.10.25 Passportjs 通过 Google 和 Facebook 提供身份验证。我的包裹:

两周前,在开发应用程序的另一部分时,我注意到用户注册功能不再适用于这两种服务。具体来说,Google Oauth2 代码在初始同意页面后返回以下错误。

  1. 那是一个错误。

错误:invalid_request

缺少必需参数:范围

这是我的策略定义的相关部分:

令牌回调函数的机制不相关,因为进程永远不会走那么远(由节点调试器和控制台日志语句验证)。

这是我的休息端点:

在进行了一些初步故障排除后,我采用了使用 Google 的 Oauth 2.0 Playground 和自定义身份验证和令牌端点(在我的 passportjs 版本中使用的端点)以及我自己的客户端 ID 和密码的方法,以将那里的每个交互与我的代码正在做的事情进行比较。同意提示的初始请求工作正常并与 Playground 匹配,并且回调返回适当的代码,例如code=4/EUnaIvWpLIiHnKUR9WctOJKQ-_iWZ3_H9YeUYx7bJSo. 但是将代码交换为令牌的请求失败。使用节点调试器来评估 passport-google-oauth 为令牌发回的重定向请求,它构建的 URL 是:

https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=http://localhost:8080/auth/google/callback&client_id=<ID>

将此与来自 Google Oauth 2.0 Playground 的类似请求进行比较,如下所示:

http://www.googleapis.com?code=4/9uaUYjeExmPftgRLsRZ8MCc2e_7YGHow7kvew6Fkypo&redirect_uri=https://developers.google.com/oauthplayground&client_id=<ID>&client_secret=<SECRET>&scope=&grant_type=authorization_code

我的查询字符串中缺少几个参数,其中两个最重要的是我的代码和密码。我原以为谷歌的服务会为这些返回错误。相反,它会为缺少的范围参数返回一个错误,而该过程中的此步骤实际上并不需要该参数(我不知道操场应用程序为什么包含它)。

最后,我相当肯定,随着 Facebook 战略也开始失败,这在我身边的某个地方。同意后,用多个代码返回我的回调很奇怪,然后最终返回一个 TOO_MANY_REDIRECTS 错误。

那么,有人有什么想法吗?再一次,同样的代码一直运行到今年年初,然后在一段时间后开始失败。

0 投票
1 回答
211 浏览

node.js - 在 Heroku 上获取 Google OAuth2 回调时的循环结构

我正在使用 Node v4.4.0、npm 2.14.20 和sails 0.10.5。我已经使用 Google OAuth2 创建了简单的应用程序(我所拥有的只是具有用户模型的 Auth 控制器并在 config/passport.js 中配置了护照),它在本地运行时工作正常,但在 Heroku 上部署时失败。从日志中,我怀疑在用户已经通过 Google 身份验证后创建新会话存在问题。我在下面附加了一个日志,以前有人遇到过类似的问题吗?