Google Business Messaging API集成问题及自定义聊天框开发咨询
问题1:找不到Business Messages API的误区与解决方法
- 操作误区:直接在Google Cloud Console的API库中搜索Business Messages API,忽略了该API需要先通过Business Communications平台关联到你的Cloud项目才能显示。
- 正确步骤:
- 登录官方Business Communications管理平台,使用你的谷歌商家账户登录。
- 创建或选择一个代理(Agent),在创建流程中关联到你的Google Cloud项目(无项目会引导你创建)。
- 完成代理创建后,回到Google Cloud Console的API仪表盘,即可找到并启用Business Messages API。
问题2:使用授权令牌替代service.json的误区与实现方式
- 操作误区:混淆了Service Account(service.json)和OAuth 2.0用户授权两种机制。service.json适用于单商家、服务器端无用户交互的场景,而你的多商家管理需求需要用OAuth 2.0用户授权,让每个商家主动授权你的应用访问他们的Business Messages资源。
- Laravel中基于
Google\Client()的实现步骤:- 在Google Cloud Console配置OAuth 2.0客户端ID:
- 进入「API和服务」→「凭据」,创建「OAuth客户端ID」,应用类型选「Web应用」,添加你的Laravel应用回调地址(如
/auth/google/callback)。
- 进入「API和服务」→「凭据」,创建「OAuth客户端ID」,应用类型选「Web应用」,添加你的Laravel应用回调地址(如
- 初始化Google Client:
$client = new Google\Client(); $client->setClientId(env('GOOGLE_OAUTH_CLIENT_ID')); $client->setClientSecret(env('GOOGLE_OAUTH_CLIENT_SECRET')); $client->setRedirectUri(env('GOOGLE_OAUTH_REDIRECT_URI')); // 添加Business Messages必要权限范围 $client->addScope('https://www.googleapis.com/auth/businessmessages'); // 启用离线访问以获取刷新令牌 $client->setAccessType('offline'); $client->setPrompt('consent'); - 引导商家完成授权:
- 生成授权URL供商家访问:
$authUrl = $client->createAuthUrl(); - 在回调路由中用授权码交换令牌并存储:
$token = $client->fetchAccessTokenWithAuthCode($request->code); // 将$token['refresh_token']与商家信息绑定后存入数据库
- 生成授权URL供商家访问:
- 调用API时使用商家的刷新令牌:
// 从数据库取出对应商家的令牌数据 $client->setAccessToken($tokenFromDb); // 令牌过期时自动刷新 if ($client->isAccessTokenExpired()) { $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken()); $newToken = $client->getAccessToken(); // 更新数据库中的令牌信息 } // 实例化Business Messages服务并执行API调用 $service = new Google\Service\BusinessMessages($client); // 示例:获取指定代理的聊天记录 $conversations = $service->conversations->listConversations($agentId);
- 在Google Cloud Console配置OAuth 2.0客户端ID:
多商家聊天管理面板核心实现要点
- 数据库设计:存储商家基础信息、OAuth刷新令牌、关联的代理ID(Agent ID)等字段。
- 授权隔离:每个商家首次使用时需完成独立的Google OAuth授权,确保令牌与商家一一对应。
- API权限控制:调用API时严格使用对应商家的令牌,保证商家只能访问自身关联代理的聊天数据。
- 令牌维护:定时检查令牌有效期,自动刷新并更新数据库,避免因令牌过期导致API调用失败。
内容的提问来源于stack exchange,提问作者vikas singh
相关产品推荐
相关产品推荐

