错误:调用者在节点中没有谷歌聊天机器人的权限

Posted

技术标签:

【中文标题】错误:调用者在节点中没有谷歌聊天机器人的权限【英文标题】:Error: The caller does not have permission for google chat bot in node 【发布时间】:2021-01-24 05:13:50 【问题描述】:

尝试向 Google 聊天室发送消息时,我不断收到错误消息“呼叫者没有权限”。我已将机器人添加到房间,并且可以列出房间(请参阅 console.log),因此我知道我的凭据已加载且有效。此外,我尝试发送到的房间位于我的 console.log 中返回的房间列表中。不知道是什么问题。

import  Auth, chat_v1  from "googleapis";

const postMessage = async (message: string) => 
  const roomId = '<myroom>';

  let jwtClient = new Auth.GoogleAuth(
    keyFile: './googlekeys.json',
    scopes: ['https://www.googleapis.com/auth/chat.bot']
  );
  const chat = new chat_v1.Chat( auth: jwtClient );
  const rooms = await chat.spaces.list();
  rooms.data.spaces?.map((s) => 
    console.log(s);
  );
  await chat.spaces.messages.create(
    parent: `spaces/$roomId`,
    requestBody: 
      text: message,
    
  );

我的 googlekeys.json 文件格式:


  "type": "service_account",
  "project_id": "<project_id>",
  "private_key_id": "<private_key_id>",
  "private_key": "-----BEGIN PRIVATE KEY-----\<key>\n-----END PRIVATE KEY-----\n",
  "client_email": "<client_email>",
  "client_id": "<client_id>",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/starting-account-<account>"

【问题讨论】:

几个问题,以便进一步调查:您的googlekeys.json 看起来如何(经过清理的版本,没有令牌)?在使用 async/await 时,我强烈建议您使用 try-catch 块。 @JoseVasquez 我已更新问题以包含我的 googlekey.json 文件。同意 try-catch,就是尝试捕捉整个函数,但最好将其移入其中。 您能否确认您的 bot configuration > Bot 状态未禁用? @JoseVasquez 设置为“实时 - 可供用户使用” 这可以由this configuration 给出为了确保这不是您的错误原因,您能否检查您的 admin console > 应用程序 > G Suite > 设置Google Chat 和传统版 Hangouts > Chat Bots 是否关闭了允许用户安装聊天机器人选项? 【参考方案1】:

我有同样的问题。我有一个机器人无法发布到的房间。这个房间里有我和另一个人。当我将另一个人从房间里移走时,机器人就开始工作了。

我们都是 Google 群组 it@ourdomain.com 的成员。在环聊聊天 API 配置页面 (https://console.cloud.google.com/apis/api/chat.googleapis.com/hangouts-chat) 的权限部分中,我已将“您域中的特定人员和组”设置为:

me@ourdomain.com, it@ourdomain.com

我对此进行了更改以将组成员资格扩展到个人成员:

me@ourdomain.com,f@ourdomain.com,a@ourdomain.com,j@ourdomain.com

这解决了它。我猜 Google 不会在此设置中扩展群组,即使它说您可以进入群组。

【讨论】:

以上是关于错误:调用者在节点中没有谷歌聊天机器人的权限的主要内容,如果未能解决你的问题,请参考以下文章

错误: (gcloud.beta.functions.deploy) ... message=[调用者没有权限]

错误:匿名调用者没有 storage.objects.get 访问 Google Cloud Storage 对象的权限

“调用者没有权限”尝试使用 Firebase Admin SDK 创建自定义令牌

代码:403 消息:调用者没有权限

一百行代码实现简易版 ChatGPT 聊天机器人

一百行代码实现简易版 ChatGPT 聊天机器人