【发布时间】:2025-12-30 06:35:16
【问题描述】:
尝试向 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 是否关闭了允许用户安装聊天机器人选项?
标签: node.js google-api-nodejs-client hangouts-chat