QQ游戏开放平台

欢迎来到QQ游戏开放平台 登录| 管理中心 | 开发者论坛

/v3/user/uic_filter

目录

功能说明

用于过滤玩家输入的敏感词,避免出现不合规信息。

URL

https://[域名/IP]/v3/user/uic_filter

正式环境下使用域名:openapi.minigame.qq.com

后端接口,禁止从前端直接调用。

格式

JSON

HTTP请求方式

POST

输入参数说明

(1)url 参数

各个参数请进行URL 编码,编码时请遵守 RFC 1738。

注意:计算sig的源串以 POST 开头。sig校验地址 https://open.qq.com/tools

参数名称 类型 参数含义 可选/必选
openid
string
用户的唯一标识,根据APPID以及QQ号码生成
必选
openkey
string
用户的会话密钥
必选
appid unsigned int
应用的唯一ID,可以通过appid查找APP基本信息
必选
sig
string
请求串的签名,以appkey作为密钥
必选
(2) header 参数

Content-Type: application/json;charset=utf-8

注意:header 不参与 sig 计算

Content-Type 的各种参数,将直接影响 body 的数据格式,可以参考文章:四种常见的 POST 提交数据方式


(3) Post  body:

注意:body 不参与 sig 计算。

为了避免非法 json 格式,请求方可以调用 json 编码函数进行编码,编码函数将换行符、非法字符转义,以符合 json 规范。

如果手动组装 json,请处理好 text_ 中的不符合 json 规范的字符,否则将返回 1000020 错误。

参数名称 类型 参数含义 可选/必选
text_list_
json数组
请求文本数组,最长12个数组元素
必选

text_list_结构:

参数名称 类型 参数含义 可选/必选
text_
string
文本,最长2047个字符
必选
text_scene_ unsigned int
文本使用场景
1:名称
2:消息
3:标题
4:评论
5:签名
6:搜索
7:其他 详情参考附录内容
必选

请求示例

Post URL:

http://openapi.minigame.qq.com/v3/user/uic_filter?openid=14138F283ADE54B505EC9849254A25DA&openkey=A5ACECDBF7B8CD01EF7FA4C8FF809596&appid=100700930&sig=I8G6ncPeMBYIGBvjFOmD8BJyYqs%3D

注意:不要把 openid/openkey/appid/sig 参数填到了 Post 请求的 body 中,会造成 2000001 错误

相反,如果把 body 填到了 header 中,发送了空 body,会造成 2000024 错误 


Post body: (参考 http/post规范)


{
   "text_list_": [
       {
           "text_": "normal text",
           "text_scene_": 1
       },
       {
           "text_": "方誌敏",
           "text_scene_": 2
       }
   ]
}

Curl 命令行请求如下:

curl --silent --location \
--request POST 'http://openapi.minigame.qq.com/v3/user/uic_filter?openid=14138F283ADE54B505EC9849254A25DA&openkey=A5ACECDBF7B8CD01EF7FA4C8FF809596&appid=100700930&sig=I8G6ncPeMBYIGBvjFOmD8BJyYqs%3D' \
--header 'Content-Type: application/json; charset=utf-8' \
--data-raw '{
   "text_list_": [
       {
           "text_": "normal text",
           "text_scene_": 1
       },
       {
           "text_": "方誌敏",
           "text_scene_": 2
       }
   ]
}'

PHP curl 请求示例:

    $params = array();
    $params['openid'] = '14138F283ADE54B505EC9849254A25DA';
    $params['openkey'] = 'A5ACECDBF7B8CD01EF7FA4C8FF809596';
    $params['appid'] = '100700930';
    $params['sig'] = 'I8G6ncPeMBYIGBvjFOmD8BJyYqs%3D';
    // 如果 sig 已经是经过 urlEncode 的,就不能调用 http_build_query,会造成2次编码,%会被再次编码成%25,直接组装即可
    //$param_str = http_build_query($params);

    $query_str = 'openid='. $params['openid'] 
            .'&openkey='.$params['openkey'] 
            .'&appid=' . $params['appid'] 
            .'&sig=' . $params['sig'];

    $url = "https://openapi.minigame.qq.com/v3/user/uic_filter";
    $url = $url . '?' . $query_str;

    $data = ['text_list_'=>[['text_' => "normal text", 'text_scene_'=>1]]];
    $data_json = json_encode($data);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type:application/json; charset=utf-8',
        'Content-Length:' . strlen($data_json)
    ));

    $rsp = curl_exec($ch);

HTTP 请求抓包则会显示如下:

POST /v3/user/uic_filter?openkey=A5ACECDBF7B8CD01EF7FA4C8FF809596&sig=I8G6ncPeMBYIGBvjFOmD8BJyYqs%3D&openid=14138F283ADE54B505EC9849254A25DA&appid=100700930 HTTP/1.1
Host: openapi.minigame.qq.com
Content-Type: application/json;charset=utf-8
User-Agent: curl
Accept: */*
Cache-Control: no-cache
Host: openapi.minigame.qq.com
Accept-Encoding: gzip, deflate
Content-Length: 198
Connection: keep-alive
cache-control: no-cache

{
    "text_list_": [
        {
            "text_": "normal text",
            "text_scene_": 1
        },
        {
            "text_": "方誌敏",
            "text_scene_": 2
        }
    ]
}

注意:由于 POST 请求有多种格式,因此所用的 http 库可能有多种参数格式,建议详细了解所用的 http 库文档,并抓包对照格式。

如果使用的是OpenAPI V3.0 SDK,是不支持 application/json 的,需自行封装或修改。

 * php sdk 的 post 请求实际使用的是 curl 库,且只使用了 curl 的 Content-Type:multipart/form-data。见 SnsNetwork.php makeRequestWithFile()。

 * python sdk 的 https post 请求实际使用的是 httplib.HTTPSConnection,也没有支持 application/json。见 sns_network.py _https_send()。


返回参数说明

(1)公共返回

参数名称
类型
含义
ret
int
返回码:0正确返回,其他情况为异常
1000020:请求包body错误,1000020:请求包body错误,检查text_list_ 的json数组,text_ 的string类型, text_scene_ 的int类型
1000104:解包失败
1000106:参数错误
1000109:系统错误
2000020:url中缺少appid
2000024:sig 错误或者传了空 body
其他返回码对照:后台接口OpenAPI调用说明


msg
string
如果错误则返回错误信息,正确返回空
(2)私有返回

参数名称
类型
含义
text_result_cnt_
int
返回的文本条数
text_result_list_
json 数组
返回的文本数组

text_result_list_结构:

参数名称
类型
含义
check_ret_
int
0:合法 1:恶意
punish_type_
int
1:完全恶意,禁止显示
2:部分恶意,需要替换成 result_text_
result_text_
string
敏感词检测后的文本,敏感词被替换成**

注意:私有返回只有在私有参数填写完整的情况下才会返回。

正确返回示例

JSON示例:


{
   "msg": "success",
   "ret": 0,
   "text_result_cnt_": 2,
   "text_result_list_": [
       {
           "check_ret_": 0,
           "punish_type_": 0,
           "result_text_": "normal text"
       },
       {
           "check_ret_": 1,
           "punish_type_": 2,
           "result_text_": "***"
       }
   ]
}


错误返回示例

JSON示例:


{
   "ret":1000002,
   "msg":"您提交的参数不正确,请重新操作!"
}


不同的异常,错误码不同。


附:文本场景类text_ scene_

1 名称

玩家昵称、备用昵称、公会名称、战队名称、房间名称、宠物名称、组织名称、联盟名称、门派名称、组队名称、车队名称、符文名称、摆摊(商店)名称等


2 消息

私聊(密聊、密语)消息、群聊消息、好友消息、世界消息、组队消息、公会消息、战队消息、局内消息、小喇叭消息、大喇叭消息、世界喇叭消息、局内所有人消息、门派聊天消息、附近频道消息、彩聊消息、地图消息、系统消息、仙人消息、动态消息、好友验证消息、直播间弹幕消息等


3 标题

邮件标题、帖子标题、文章标题


4 评论

资讯评论、新闻评论、帖子评论、博文评论、回复、视频评论、帖子、博文、邮件内容、


5 签名

个人简介、个人宣言、个人签名、个人心情、个人说说、车队简介、公会简介、组织简介、联盟简介、联盟宣言、门派简介、好友签名


6 搜索

搜索内容

联系我们 向上
回到顶部