举报系统(服务端)接入文档

2021.08.25 10:00:06

    通过openApi上报举报数据,由易盾给出被举报方的相关验证信息

    通用设置

    • 通信协议

    支持HTTP协议,HTTPS协议

    • 请求方法

    Post方法

    • 字符编码

    所有接口的请求和响应数据编码皆为utf-8

    • API请求结构
    名称 描述 备注
    API入口 具体API接口地址 http://open-yb.163yun.com/api/open/v1/risk/doubtful/checkroleidexist
    公共参数 每个接口都包含的通用参数 详见 公共参数 说明
    私有参数 每个接口特有的参数 详见每个API接口定义
    • 公共参数

    公共参数是用于标识产品和接口鉴权目的的参数,如非必要,在每个接口单独的接口文档中不再对这些参数进行说明,每次请求均需要携带这些参数。

    • 鉴权参数
    鉴权参数名称 类型 是否必填 最大长度 描述
    appId String 10 appId
    timestamp long 13 调用接口当前时间,单位毫秒,防重放
    nonce String 16 随机码,防重放
    token String 32 使用appKey签名的数据,检验权限
    • 响应通用字段

    Json 格式, 如无特殊说明,每次请求的返回值中,都包含下面字段:

    参数名称 类型 描述
    code int 接口调用状态,200:正常,其他值:调用出错,返回码见响应返回码定义
    msg String 结果说明,成功返回ok,调用出错,那么返回错误描述见响应返回码定义
    data JSON 返回结果,构成如下
    lastestEventTime long 不为默认值0时为当前可供查询数据的最新时间
    注意:嫌疑数据明细查询返回格式比较特殊,请具体接口定义。
    • 响应返回码

    响应返回码(code)反应了API 调用和执行的概要结果。当返回码不为 200 时, 表示请求未正常执行,返回码描述 (msg) 对该结果进行了细化补充,用户可根据返回码判断 API 的执行情况。

    所有接口调用返回值均包含 code 和 msg 字段, code 为返回码值,msg 为返回码描述信息,返回码表如下:

    200 OK 正常
    400 BAD_REQUEST 请求参数不合法
    4400 API_REQ_PARA_MISSING 参数appId缺失
    401 API_REQ_UNAUTHORIZED 未授权或者授权已过期
    402 OFFLINE 服务下线
    403 FORBIDDEN 无权限操作
    404 API_NOT_FOUND 服务不存在
    405 LENGTH_OVERLIMIT 长度超过限制
    406 ENTITY_TOO_LARGE 请求实体数据大小超过限制!
    407 REQUEST_EXPIRED 请求过期
    411 CAPCITY_EXCEED 请求频率或数量超过限制!
    500 SERVICE_UNAVAILABLE 服务异常
    501 SERVICE_FAILED 操作失败
    5503 API_NOT_AVAILABLE API未开放,不可使用
    5509 API_QPS_LIMIT_EXCEED API QPS超出限制
    5709 API_APP_FREQ_MIN_LIMIT_EXCEED API 最小请求频率超出限制,需要降低请求频率
    • 接口鉴权

    易盾移动安全服务使用签名方法对接口进行鉴权,所有接口每一次请求都需要包含签名信息(signature 参数),以验证用户身份,防止信息被恶意篡改。

    1.申请安全凭证

    在第一次使用 API 之前,需申请安全凭证,Appkey,请妥善保管,避免泄漏。

    2.签名生成算法

    签名生成方法如下:

    a.对公有参数,按照参数名ASCII码表升序顺序排序。如:foo=1, bar=2, foo_bar=3, baz=4 排序后的顺序是 bar=2, baz=4, foo=1, foobar=3。

    b.将排序好的参数名和参数值构造成字符串,格式为:key1+value1+key2+value2… 。根据上面的示例得到的构造结果为:bar2baz4foo1foobar3 。

    c.选择申请的Appkey,加到上一步构造好的参数字符串之后。

    d.把c步骤拼装好的字符串采用 utf-8 编码,使用 MD5 算法对字符串进行摘要,计算得到 signature 参数值,将其加入到接口请求参数中即可。MD5 是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32位十六进制字符。

    获取签名Token示例代码如下:

    String token= SignatureUtils.genSignature(appKey, appId, timestamp, nonce);
    

    附带SignatureUtils.java 如下:

    package com.netease.is.clientapi.utils;
    import com.google.common.collect.Maps;
    import org.apache.commons.codec.digest.DigestUtils;
    import java.io.UnsupportedEncodingException;
    import java.util.Arrays;
    import java.util.Map;
    /**
    * Created by yubaohong on 19-5-22.
    */
    public class SignatureUtils {
         /**
         * 暴露获取token的方法
         * @param appKey
         * @param appId
         * @param timestamp
         * @param nonce
         * @return
         * @throws UnsupportedEncodingException
         */
        public static String genSignature(String appKey, String appId, String timestamp, String nonce) throws UnsupportedEncodingException {
            Map<String, String>userParams = getTokenParams(appId, timestamp, nonce);
            return SignatureUtils.genSignature(appKey, userParams);
        }
        
         /**
         * 生成签名信息
         * @param appKey产品私钥
         * @param params 接口请求参数名和参数值map,不包括signature参数名
         * @return
         */
        private static String genSignature(String appKey, Map<String, String> params) throws UnsupportedEncodingException {
            // 1. 参数名按照ASCII码表升序排序
            String[] keys = params.keySet().toArray(new String[0]);
            Arrays.sort(keys);
            // 2. 按照排序拼接参数名与参数值
            StringBuilder sb = new StringBuilder();
            for (String key : keys) {
                sb.append(key).append(params.get(key));
            }
            // 3. 将appKey拼接到最后
            sb.append(appKey);
            // 4. MD5是128位长度的摘要算法,转换为十六进制之后长度为32字符
            return DigestUtils.md5Hex(sb.toString().getBytes("UTF-8"));
        }
        
        /**
         * 拼接参数
         * @param appId
         * @param timestamp
         * @param nonce
         * @return
         */
        private static Map<String, String> getTokenParams(String appId, String timestamp, String nonce) {
            <String, String> userParams = Maps.newHashMap();
            userParams.put("appId", appId);// 固定
            userParams.put("timestamp", timestamp);
            userParams.put("nonce", nonce);
            return userParams;
        }
    }
    
    

    举报详情上报

    接口地址: http://open-yb.163yun.com/api/open/v1/risk/report

    请求方法:Post

    接口描述:举报数据上报

    Content-Type:application/json

    请求参数,由鉴权参数与请求参数两部分构成:

    公共参数已省略,详细见 请求公共参数 请求参数定义如下:

    参数名称 类型 长度 是否必填 描述
    appId string 10 AppID
    reportType int 1 举报类型.0:外挂,1:工作室,2:言语辱骂,3:违规宣传,4:消极游戏
    reportTime long 13 举报时间
    reportRoleAccount string 最大255 举报用户账号
    reportRoleId string 最大255 举报用户角色Id
    reportRoleName string 最大255 举报用户角色名
    reportDeviceId string 最大255 举报用户设备标识
    reportDesc string 最大255 举报描述
    verificationSpan int 2 查询跨度,以小时为单位,建议最大为24小时
    reportedRoleAccount string 最大255 被举报用户账号
    reportedRoleId string 最大255 被举报用户角色
    reportedRoleName String 最大255 被举报用户名称
    reportedRoleServer String 最大255 被举报用户服务器
    reportedDeviceId string 最大255 被举报用户设备标识
    reportedPlatform int 2 被举报方系统 1:ios ; 2:andorid

    举报详情查询

    接口地址: http://open-yb.163yun.com/api/open/v1/risk/report/list

    请求方法:Post

    接口描述:举报详情数据查询

    Content-Type:application/json

    请求参数,由鉴权参数与请求参数两部分构成:

    公共参数已省略,详细见 请求公共参数

    请求参数定义如下:

    参数名称 类型 长度 是否必填 描述
    startTime long 13 举报时间查询起始时间
    endTime long 13 举报时间查询终止时间
    reportedRoleAccount String 最大255 被举报方账号
    reportedRoleName String 最大255 被举报方角色名
    reportedRoleIds Array 最大65535 被举报方角色ID
    reportedRoleServer String 最大255 被举报用户服务器
    reportedDeviceId String 最大255 被举报方设备ID
    reportRoleAccount String 最大255 举报方账号
    reportRoleName String 最大255 举报方角色名
    reportRoleId String 最大255 举报方角色ID
    reportDeviceId String 最大255 举报方设备ID
    defineResult int 1 风险处理结果(1:拦截成功;0:未拦截)

    请求参数示例:

    {"appId":"xxx888871","timestamp":${currentTime},"token":"${sign}","nonce":"111","startTime":1564041324000,"endTime":1574127724519}
    

    响应结果:

    调用正常返回使用linedText格式

    响应内容设置:Content-type: text/plain;charset=utf-8

    linedText格式定义如下:

    行号 格式 描述
    第1行 startFlag=${下一批数据起始标记} 1. 当查询需要分批返回数据时,表示下一批数据起始标记。
    2. 当为null值,表示数据都已经返回,不需要继续执行下一批查询
    第2行 separator=${列分隔符号} 行中的不同列之间分隔符,如Tab,或\001等
    第3行 colums=${数据列名称} 数据列名称,以"列分隔符"切分
    第4行 size=${总行数} 数据总行数,可以为空值
    第5行 每行数据记录 数据记录,从第5行开始
    第...行 ... ...

    返回示例如下:

    startFlag=949f4284bb294e7c840cc535143fc5a6
    separator=\t
    colums=举报时间	举报账号	举报角色ID	举报角色名称	被举报账号	被举报角色ID	被举报角色名称	被举报角色服务器	举报类型	验证结果	外挂检测	风险检测	应用环境检测	威胁等级	风险处理	查询跨度
    size=1
    1595223901000	roleaccount007	JB_QA_RoI	null	roleaccount007	roleTestid98	yltestRN	江湖3	工作室	-1	未发现	未发现	未发现	1	-1	24
    

    异常返回Json格式,构成如下:

    参数名称 类型 描述
    code int 接口调用状态,200:正常,其他值:调用出错,返回码见响应返回码定义
    msg String 结果说明,成功返回ok,调用出错,那么返回错误描述见响应返回码定义

    示例如下:

    {
        "code": 4401,
        "msg": "Token验证失败"
    }
    
    在线咨询 电话咨询:95163223 免费试用