问题标签 [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 回答
264 浏览

google-cloud-platform - GCP - 使用应用程序默认凭据的云功能域范围委派(无 -jwt)

我正在尝试创建一个基于 NodeJS 的云函数,它使用域范围的委托访问来使用 API 方法 gmail.users.settings.delegates.list。

我正在寻找不使用服务帐户 JSON 密钥的解决方案,我想改用默认凭据。

我使用这个 launch.json 文件配置我的本地环境来模拟云功能环境

将 env 变量打印GOOGLE_APPLICATION_CREDENTIALS到 GCF 中似乎这个变量根本不存在,但我不明白如何更好地模拟 GCF env

谈到auth对象,我发现了两种方法:

第一的:

第二:

inputData.userPrimaryEmail包含与服务帐号在同一组织中的有效 GSuite 帐号。

Bad Request当我将 GCF 发布到 GCP 时,这两种方式在本地都可以正常工作,但会因错误而停止工作。

谁能帮忙?


编辑

几个小时后,我发现这篇文章谈到了它

我按照他的指示修改了我的代码

第三:

第四:

和以前一样,所有这些在本地都可以正常工作,但是我对 GCF 提出了错误的请求

0 投票
2 回答
501 浏览

node.js - 在 Google Cloud Run 中使用默认凭据的域范围委派

我正在使用自定义服务帐户(使用--service-account部署命令中的参数)。该服务帐户启用了域范围的委派,并安装在 G Apps 管理面板中。

我试过这段代码:

如果我在我的机器上运行它(将GOOGLE_APPLICATION_CREDENTIALSenv var 设置为分配给 Cloud Run 服务的同一服务帐户的路径),它就可以工作,但是当它在 Cloud Run 中运行时,我会收到以下响应:

我看到了针对同一问题的解决方案,但它适用于 Python,我不知道如何使用 Node 库复制该行为。

0 投票
2 回答
1551 浏览

javascript - TypeError:无法读取未定义的属性“redirect_uris”

我想编写一个应用程序来处理我的一些以某种方式标记的 gmail 电子邮件。

这里的示例代码为我的代码提供了一个起点(我已经使用 promises 而不是 async await 重写了它):

以下是我到目前为止采取的步骤:

  • 创建了一个谷歌云项目
  • 创建了具有所有者角色的服务帐户
  • 从服务帐户下载密钥文件并将其复制到我的代码目录key.json
  • 运行代码:

这是我得到的错误:

似乎它期望带有重定向 url 的 oauth 凭据。此外,GOOGLE_APPLICATION_CREDENTIALSkeyfilePath我调用authenticate. 我做错了什么,我怎样才能让这段代码成功执行?

0 投票
2 回答
1186 浏览

android - firebase颤振应用程序的依赖关系解析错误

当我尝试构建我的应用程序时,我为我的 firebase 功能和 grpc 更新了 firebase admin,它给出了这个错误:

这是我的 android/build.gradle:

这是 android/app/build.gradle:

pubspec.yaml:

它说有一个重复的类,但到目前为止,我已经尝试删除 firebase 分析、play services auth 和 firebase core。

0 投票
1 回答
809 浏览

node.js - Google My Business:如何在没有用户交互的情况下生成访问令牌

我想使用 Google My Business API 使用我的组织帐户详细信息搜索和管理我们客户的业务。

我想使用 API 作为代理,因为我想管理我们客户的业务。

我已经提交了 API 访问表单并得到了使用 API 的确认。此外,我在同一个帐户中生成了 OAuth 凭据和服务帐户。

但根据 GMB API 文档,我们需要传递访问令牌才能访问 API。

我已经查看了使用 OAuth 和服务帐户的身份验证过程。根据我的要求,我想直接从我的 NodeJS 服务器代码在后端生成访问令牌,而无需用户交互。

我想使用我的帐户详细信息来使用 API,因此需要获得用户的许可,因为我不需要任何用户信息。

我已尝试将以下内容用作服务帐户,但它返回错误。

因此,任何人对此都有想法。您的帮助将不胜感激。

0 投票
0 回答
160 浏览

dialogflow-es - Google API 身份验证:是否有替代服务帐户密钥的方法?

我正在寻求您的建议,以拼凑一种有助于对 Dialogflow ES 和 CX 进行身份验证的机制,以允许从我们的工作台应用程序以流畅且防错的方式在多个代理(项目)上运行实验。工作台是用 TypeScript 编写的内部工具(使用 dialogflow RPC 节点模块),在 GCP 之外运行。我们的用户分析将相同输入(话语)发送给多个代理的结果,通常在他们的工作过程中来回切换。

通过正确的 IAM 配置,我们已经能够通过执行成功检测到意图gcloud auth application-default login,但是我们还没有找到以编程方式更新配额项目或通过google.cloud.dialogflow库指定配额项目的方法,因此我们无法修复“在项目之间轻松切换”部分。看起来篡改quota_project_idapplication_default_credentials.json 中的属性一旦经过身份验证是可行的方法(gcloud auth application-default set-quota-project <project>),但我们更愿意以编程方式执行此操作。

使用服务帐户密钥 (JSON) 可以按预期工作,这就是我们迄今为止一直在做的事情,这也是我们在 CI/CD 管道和生产中运行的代理中所做的事情。但我们的目标是减少我们与个人共享的服务帐户凭据文件的数量。理想情况下,语音/数据科学家将使用他们自己的最终用户凭据来执行实验。

我们正在寻找替代方案,以便用户只需进行一次身份验证gcloud auth application-default login,工作台将在幕后处理其余的工作,仅使用必须运行实验的项目 ID 作为附加参数。这将消除暂停实验以更新配额项目(使用set-quota-project)或GOOGLE_APPLICATION_CREDENTIALS在使用服务帐户密钥时更新变量的需要。

我们尝试的另一件事是服务帐户模拟,不幸的是,库似乎不支持google.cloud.dialogflow,所以即使我们能够使用模拟成功地将请求(使用 Curl/Postman)提交到 Dialogflow RESTful API,我们也无法在我们的代码中利用这种机制。

有没有人能够克服类似的挑战?是否有任何其他身份验证机制可以帮助我们实现这一目标?

0 投票
1 回答
56 浏览

node.js - 可以使用 google-auth-library 进行一批请求吗?

到目前为止,我使用客户端的方式就像

由于response拥有一个消息 ID 列表,我将不得不使用它users.messages.get来获取每条消息的实际数据。我不希望只为一个查询执行数百个单独的请求。有没有办法批量users.messages.get请求?

0 投票
0 回答
242 浏览

google-api - Google Search Console API:如何解决“用户没有足够的站点权限”?(当用户有权限时)

我正在尝试通过他们的 Node 包使用 Google 的 Search Console API,我的代码如下所示:

...除了在我的版本example.com中已替换为我的实际域。

我在命令行调用它:

我创建了一个服务帐户,服务密钥 JSON 文件来自它。该服务帐户有权访问我的 Search Console 帐户。当我查看https://search.google.com/search-console/users时,我看到了那里的服务用户,并且在“权限”列中它具有“完整”。

谁能帮我理解为什么我在运行代码时会出现以下错误?

提到的 URL https://support.google.com/webmasters/answer/2451999只是将我链接到搜索控制台用户页面......(再次)表示服务用户具有完全权限。

0 投票
1 回答
153 浏览

node.js - @hapi/boom 没有返回正确的错误,而是“500:内部服务器错误”

@hapi/boom 没有返回代码中抛出的正确错误。这是代码示例:

控制器.ts

验证.ts

现在,发生错误时,它应该返回Unauthorized,但它总是返回Internal Server Error

有什么解决方案可以返回带有信息的实际错误?

堆:

@hapi/hapi:20.0.3

@hapi/繁荣:9.1.1

0 投票
0 回答
266 浏览

google-api - FetchError:对 https://www.googleapis.com/oauth2/v4/token 的请求失败

请帮助我了解这个问题。

我正在开发一个业务消息 API。

基本上,我在业务消息传递控制台上定义了一个 webhook,以便我可以向客户端提供自定义响应。

webhook URL 是一个 AWS API 网关 URL,它在内部调用 AWS lambda,我在其中使用 Nodejs 环境使用 Google API 编写了所有代码。

当我开始集成时,我能够正确实现所有内容,但是在测试它时,我没有返回任何状态代码,因此 AWS API 网关不断重试调用,业务消息传递 API 不断被调用,现在我收到此错误。

FetchError:对https://www.googleapis.com/oauth2/v4/token的请求失败,原因:在 ClientRequest 建立安全 TLS 连接之前,客户端网络套接字已断开。(/opt/nodejs/node_modules/node-fetch/lib/index.js:1461:11) 在 ClientRequest.emit (events.js:315:20) 在 TLSSocket.socketErrorListener (_http_client.js:469:9) 在 TLSSocket .emit (events.js:315:20) 在emitErrorNT (internal/streams/destroy.js:106:8) 在emitErrorCloseNT (internal/streams/destroy.js:74:3) 在processTicksAndRejections (internal/process/task_queues. js:80:21) {类型:'system',errno:'ECONNRESET',代码:'ECONNRESET',配置:{方法:'POST',url:'https://www.googleapis.com/oauth2/v4 /token',数据:{ grant_type:'urn:ietf:params:oauth:grant-type:jwt-bearer',