调用美团ai评论分析api前必须确认三件事:一是注册企业账号并申请「评论情感分析」权限获取app_id和app_secret;二是用app_id与app_secret调用/oauth/token接口获取有效期2小时的access_token;三是所有请求必须携带authorization头及json格式body,且text字段不超过500字。

调用美团AI评论分析API前必须确认的三件事
美团AI评论分析不是PHP内置功能,得走HTTP请求调用其开放API;没申请接口权限、没拿到access_token、没看懂签名规则,代码写得再顺也返回{"code":401,"msg":"invalid sign"}。
- 去美团开放平台注册企业账号,申请「评论情感分析」能力,拿到
app_id和app_secret -
access_token要自己用app_id+app_secret向https://openapi.meituan.com/oauth/token换,有效期2小时,别硬编码进脚本 - 所有请求头必须带
Authorization: Bearer {access_token},且body用application/json格式,传text字段(单条最多500字)
用cURL发POST请求拿情感倾向结果
别用file_get_contents或get_headers——它们不支持自定义header和JSON body;cURL是唯一靠谱选择。重点不是“能不能发”,而是“发得对不对”。
- 必须设
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Authorization: Bearer '.$token]) - body要用
json_encode(['text' => $review]),不能直接拼数组或传raw string - 记得
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true),否则返回bool(true)而不是JSON字符串 - 示例片段:
$ch = curl_init('https://openapi.meituan.com/ai/sentiment'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['text' => '这家店上菜太慢,但牛肉很嫩'])); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json', 'Authorization: Bearer abc123']); $result = curl_exec($ch); $data = json_decode($result, true); // 拿到后检查$data['sentiment']是否为'positive'/'negative'/'neutral'
处理返回结果时最容易漏掉的兼容性问题
美团API返回结构看似稳定,但实际会因文本长度、敏感词、服务抖动返回异常字段,直接取$data['sentiment']可能报Notice:Undefined index。
- 先判断
isset($data['code']) && $data['code'] === 0,非0就别往下读sentiment - 有些返回里
sentiment是字符串(如"positive"),有些是数字(如1),得查文档确认当前版本规范,别凭经验硬转 - 如果批量分析多条评论,别在循环里反复调
curl_init——复用同一个$ch句柄,设CURLOPT_URL和CURLOPT_POSTFIELDS即可,省开销
本地调试失败时优先检查这四个点
90%的“调不通”不是代码问题,是环境或配置卡在半路。
- PHP没开
curl扩展?运行php -m | grep curl确认 - 服务器时间比标准时间快/慢超过5分钟?美团签名含
timestamp,误差大了直接拒 - 传的
text含不可见字符(比如微信复制来的零宽空格)?用trim(preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/', '', $review))清理 - 错误信息是
"msg":"invalid app_id"?检查app_id是不是填成了测试环境ID,正式环境要用另一套
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











