问题标签 [google-auth-library-nodejs]

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

javascript - 验证 ID 令牌完整性的问题

如果您将 Google 登录与与后端服务器通信的应用或网站一起使用,您可能需要识别服务器上当前登录的用户。要安全地执行此操作,请在用户成功登录后,使用 HTTPS 将用户的 ID 令牌发送到您的服务器。然后,在服务器上,验证 ID 令牌的完整性,并使用令牌中包含的用户信息来建立会话或创建新帐户。

我正在尝试添加 Google 身份验证,但遇到了一个问题:

这里我有客户端代码:

这是服务器代码:

我在上面的控制台日志中成功获得了令牌,但之后我收到了这个错误:

GaxiosError:检索验证证书失败:

在此处输入图像描述

请帮助我什至不知道如何调试?

注意:我正在使用此代码

注2:我正在测试这个http://localhost:4000

0 投票
1 回答
127 浏览

node.js - 有时无法在 googleapis auth 库中检索 GKE Autopilot 上的应用程序默认凭据

我的 GKE Autopilot 集群中的一些 pod 无法获取应用程序默认凭据来调用其他 GCP 服务。

我将应用一个新部署,3 个 pod 中的 1 个或 2 个将无法使用 googleapis (google-auth-library) npm 包进行身份验证(尝试使用版本 v73.0.0 和最新的 v84.0.0)。

我得到:

Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information. at GoogleAuth.getApplicationDefaultAsync (/node_modules/google-auth-library/build/src/auth/googleauth.js:173:19)

我正在使用此代码并重试失败:

通过手动调用元数据服务器curl http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=<my-gcp-endpoint>从 pod 中返回一个有效令牌,该令牌无法通过 googleapis 包进行身份验证

有时会杀死 pod 并让它们重新创建工作(使用 Horizo​​ntal Pod Autoscaler)。其他时候,我的部署没有问题。有时,杀死豆荚以便它们重新创建根本没有帮助。这种行为似乎非常不确定。

任何帮助将不胜感激,谢谢!

0 投票
1 回答
42 浏览

vue.js - 无法在 Vue 中保存登录会话

我有一个登录页面,我可以通过谷歌登录,当我登录时,我得到了用户的参数。问题是当我刷新页面时参数没有保存。

这是我的代码:

作为一种解决方案,我想将会话保存在 cookie 中,因此我尝试在我的代码中添加一个虚拟 cookie,如下所示:

但我得到了Uncaught TypeError: Vue.use is not a function

我究竟做错了什么?

有没有更好的方法来保存登录会话?

0 投票
1 回答
107 浏览

google-bigquery - bigquery 从文本\字符串而不是文件路径使用服务帐户进行身份验证


我正在使用 这个 nodejs bigquery 客户端

我在 string\text 中有服务帐户 json,出于安全原因,我想避免将其写入临时文件。
是否可以选择new BigQuery()将服务帐户作为字符串而不是文件路径提供?
在任何地方都找不到此选项,在所有示例中都需要提供文件路径或导出GOOGLE_APPLICATION_CREDENTIALS变量。

谢谢。

0 投票
1 回答
128 浏览

oauth - 如何从 id 令牌谷歌登录中获取名字和个人资料图片

所以我正在从网站与谷歌登录进行集成,所以基本上这里的流程是:谷歌登录 - >获取令牌ID并发送到auth rest api - > rest api获取用户名,个人资料图片和电子邮件,然后注册用户。我的问题是我无法发现如何获取用户名和个人资料图片。即使使用 userinfo.email 和 userinfo.profile 范围,令牌 ID 也仅存储在有效负载中 UserId 和电子邮件。这是我的令牌 ID 有效负载现在正在查看的内容:

我期待在有效负载上发送个人资料图片和名字和姓氏。任何人都可以帮我弄清楚如何获得这些领域吗?

感谢任何帮助。

0 投票
0 回答
41 浏览

google-auth-library-nodejs - 如何使用 react-google-login 获取 REFRESH_TOKEN

我正在使用react-google-loginReact 插件,它为我提供了一个用于 React 的 Google oAUth 登录/登录组件。这是我的组件:

通过插入accessType='offline'prompt='consent'我希望 GoogleLogin 与其他值一起返回 REFRESH_TOKEN 但它没有。

我还尝试插入responseType='code'GoogleLogin 道具,在这种情况下,我希望获得一个 AUTHORIZATION CODE,该代码应该用于通过发出 POST 调用来获取 ACCESS_TOKEN 和 REFRESH_TOKEN:

(取自 Google 提供的文档:https ://developers.google.com/identity/protocols/oauth2/web-server#exchange-authorization-code )

因此,在获得 AUTHORIZATION_CODE 后,我尝试进行此 post call,但我总是收到以下错误:

问题是:

  1. 我应该从 GoogleLogin 组件获取 REFRESH_TOKEN 吗?也许我错过了输入一些道具......
  2. 我是否应该获得 AUTHORIZATION_CODE,然后尝试通过向https://www.googleapis.com/oauth2/v4/token发出 POST 调用来与 REFRESH_TOKEN 交换它?
0 投票
0 回答
25 浏览

node.js - google-auth-library 安装时缺少依赖项

我正在尝试将google-auth-library与 react 应用程序一起使用,但出现各种错误,这些错误似乎表明缺少依赖项。错误都采用类似于以下的格式:

错误消息包括有关如何为缺少的依赖项添加 polyfill 的详细信息,但即使在完成并添加所有这些 polyfill 之后,我也无法使用该库。开发服务器的日志仍然显示丢失文件的错误,并且浏览器控制台出现以下错误:

重现步骤:

  1. 安装节点 16.13.2
  2. 创建一个反应应用npx create-react-app minimal-example
  3. 输入创建项目的目录cd minimal-example
  4. 安装 google-auth-librarynpm install google-auth-library --save
  5. 将以下代码添加到./src/App.js const {GoogleAuth} = require('google-auth-library');
  6. 启动开发服务器npm start
  7. 观察错误

我究竟做错了什么?

0 投票
0 回答
51 浏览

google-cloud-platform - 在 GCP 中使用带有附加服务帐户的域范围委派

我想将域范围的委派与 Google Cloud Function 的附加服务帐户(又名功能身份)一起使用。我正在为 Node.js 使用 Google Auth Client 库。

管理服务帐户密钥的最佳做法不鼓励使用服务帐户密钥进行域范围的委派:

尽管说明使用域范围委派的示例通常建议使用服务帐户密钥,但不必使用服务帐户密钥来执行域范围委派。

在另一个最佳实践文档中,特别建议使用客户端库来获取访问令牌:

要在应用程序中获取访问令牌,请尽可能使用客户端库。客户端库会自动检测应用程序是否在具有附加服务帐户的计算资源上运行。

然而,使用API构建和签署 JWT的建议过程signJWT是手动的并且相当麻烦。

毕竟,使用服务帐户密钥通过 JWT 模拟用户非常简单:

我想知道是否有更简单的方法可以使用 Node.js 的 Google Auth 库来实现这一点。

0 投票
0 回答
12 浏览

node.js - 我怎么知道我需要刷新刷新令牌?

我正在使用 google nodejs 日历插件来允许医生与患者联系并设置约会。

我正在使用以下代码

如何判断刷新令牌需要重置?如果是这种情况,我需要向医生发送电子邮件。我可以检查“错误”变量吗?如果是这样我应该检查什么?

0 投票
0 回答
19 浏览

javascript - 为什么 passportjs 的 req 方法不起作用并被标记为“不是函数”?

req.isAuthenticated 和 req.logout 似乎不起作用,并在我的项目中标记为“不是函数”。这是该项目的代码。我的验证功能似乎没有按预期工作。除了我现在在 udemy 上观看的付费教程之外,我还处理了其他视频教程,但我在结束时遇到了同样的错误,或者我的会话没有存储。

  • 当我登录“用户”时,我得到“未定义”
  • 我的验证似乎无法正常工作
  • passportjs req.method() 不起作用。