# 申诉接口
开始使用前,请先创建应用,申请UGC内容安全审核,并成功完成审批,取得code值。
本文提供了申诉的具体接口和参数说明。
# 请求
POST https://apigate.glodon.com/ugc/api/v1/ugcFeedback
1
# header参数
参数名 | 必选 | 类型 | 描述 |
---|---|---|---|
Authorization | 是 | String | Bearer app_access_token. 注:该 access_token 是应用级别 |
Content-Type | 是 | String | application/json |
# body参数
参数名 | 必选 | 参数类型 | 参数含义 |
---|---|---|---|
name | 是 | 字符串 | 申诉人姓名(可为空字符串,建议尽可能完善申诉人信息) |
phone | 是 | 字符串 | 申诉人电话(可为空字符串,建议尽可能完善申诉人信息) |
是 | 字符串 | 申诉人邮箱(可为空字符串,建议尽可能完善申诉人信息) | |
description | 是 | 字符串 | 申诉原因 |
content | 是 | 字符串 | 申诉对象(文本直接上传,图片、视频上传对应链接) |
type | 是 | 字符串 | 文本、图片、视频的申诉对象类型:text、image、video |
callback | 是 | 字符串 | 申诉结果回调通知您的URL,支持HTTP、HTTPS。callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksum和data。 |
seed | 是 | 字符串 | 该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。 |
code | 是 | 字符串 | 产品ID(申请开通申诉流程中,由云安全技术部提供) |
# API请求示例
# 返回参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | String | 是 | 请求成功为0,否则为error code(HTTP状态码) |
message | String | 是 | 请求成功为success,否则为错误描述信息 |
feedbackId | 字符串 | 是 | 本次申诉的ID |
content | 字符串 | 是 | 提交申诉的对象 |
# 返回结果示例
# 结果回调通知
内容安全按照下表描述的生成规则和格式设置checksum和content,调用您的callback接口返回检测结果。
注意
您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
名称 | 类型 | 描述 |
---|---|---|
checksum | 字符串 | 由code(产品ID) + seed +data 拼成字符串,通过SHA256算法生成。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。 |
data | 字符串 | JSON字符串格式,请自行解析反转成JSON对象。data结果的示例如下。 |
# 回调返回参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
result | 字符串 | 是 | 申诉处理结果(合规、不合规) |
feedback | 字符串 | 是 | 申诉处理意见 |
feedbackId | 字符串 | 是 | 本次申诉ID |
content | 字符串 | 是 | 提交的视频url地址 |
status | 字符串 | 是 | 申诉处理状态(已受理,处理完毕。) |
回调结果获取示例:
@RestController
public class demo {
@PostMapping(value = "/test")
public String test(@RequestParam("checksum")String checksum,
@RequestParam("data")String data){
String code = "123"; //云安全中心提供code
String seed = "SignSeedDemo"; //回调通知请求中的签名自定义部分,防止被猜解
String result = getSHA256Str(code + seed + data);
if(result.equals(checksum)){
System.out.println("签名正确");
} else
System.out.println("签名异常");
return "demo";
}
public static String getSHA256Str(String str){
MessageDigest messageDigest;
String encdeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(str.getBytes("UTF-8"));
encdeStr = Hex.encodeHexString(hash);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encdeStr;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
checksum结果示例
087d4092bcef114c5c0eeaea3f12bdb62f91f7497daf1a984a06f384332b248e
1
data结果示例
{
"result":"合规",
"feedback":"处理意见",
"feedbackId":"a2dcd910-e0aa-4c75-8c07-9e3d1e8307a0",
"content":"https://img.tupianzj.com/uploads/allimg/200109/37-20010Z95312.jpg",
"status":"处理完毕"
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 下一步操作
依据申诉处理结果result进行下一步处理。