错误:调用者在节点中没有谷歌聊天机器人的权限
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 对象的权限