服务端接口文档
集成服务端接口之前,请先确保已在开发者中心将服务器出口IP添加到个像白名单列表。
鉴权接口
功能说明
该接口为鉴权接口,在调用获取新画像接口之前,需先调用该接口进行鉴权,只有鉴权 成功的用户,才可以继续调用其他接口。
URL
HTTP请求方式
POST
请求参数
参数名称
参数类型
备注
sign
String
sha256(appKey+timeStamp+masterSecret)
timestamp
Long
生成sign的时间戳
请求参数JSON示例:
{
"sign": "ec6536dfad5e1554ab12f777da55f5de2f36db32db7002a4784601b5469d1567",
"timestamp": 1528855537000
}
JSON返回示例
成功:
{
"result": true,
"authtoken": "334a8e7abc96f15a99e9a2e796f7966f2737bee12e407ef534720fdbbccef073"
}
失败:
{
"error_info": {
"error_code": 304,
"error_msg": "IP受限"
}
}鉴权生成的 authtoken 是有过期时间的,若 token 已过期,需重新进行鉴权。
画像查询接口
功能说明
查询目标用户的画像标签信息
URL
HTTP请求方式
POST
请求参数
参数名称
参数类型
备注
token
String
鉴权接口返回的authtoken
userIdList
List
giuid列表
请求参数JSON示例:
{
"userIdList": [
"32e1d2b480sd772a5b16929c2bb4264a",
"41e1d2b48031772a5b16929c2bb4264b"
],
"token": "334a8e7abc96f15a99e9a2e796f7966f2737bee12e407ef534720fdbbccef073"
}
JSON返回示例
{
"userTag": [
{
"error_code": 0,
"userId": "32e1d2b480sd772a5b16929c2bb4264a",
"tags": [
{
"code": "010wyq00",
"weight": 3
},
{
"code": "010wyi00",
"weight": 1
},
{
"code": "010wyq00",
"weight": 3
},
{
"code": "010eq000"
},
{
"code": "010wq000",
"weight": 1
},
{
"code": "010wyr00",
"weight": 2
},
{
"code": "010iri",
"weight": 1
},
{
"code": "c33000000"
}
]
},
{
"error_msg": "用户暂无画像",
"error_code": 105,
"userId": "41e1d2b48031772a5b16929c2bb4264b"
}
]
}userIdList 最大可同时上传 200 个 userIdList。
code:画像标签编码(标签编码对照表详见资料包)
weight:画像标签权重(1:高,2:中,3:低),没有weight则表示此标签无画像权重。
错误码
错误码
说明
0
成功
102
参数格式错误
105
暂无画像
106
IP 白名单鉴权失败
107
IP 白名单鉴权异常
109
查询用户画像失败
112
用户暂无画像
302
token 已过期
303
获取用户相关信息失败
304
IP 受限
305
一分钟内获取画像频次超限
307
一天内获取画像总量超限
308
APPID 不匹配
309
APPID 和 APPKEY 不匹配
310
画像接口每分钟最大量超限
311
不是老用户,不能调用该接口
400
生成鉴权 token 失败
401
鉴权频次超限
402
鉴权一分钟请求总量超限
403
鉴权异常
404
验证 sign 失败
500
无此接口
501
未传 APPID
502
未知应用
503
其他错误
Demo示例
获取token
public class AuthSignTest {
static String url = " https://openapi-gi.getui.com/v2/{appid}/auth_sign";
public static void main(String[] args) throws Exception{
URL urlObj = new URL(url);
URLConnection con = urlObj.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) con;
// http 头部
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestProperty("Content-Type", "text/html;charset=UTF-8");
Long timestamp = System.currentTimeMillis();
// 在个像开发者中心获取的 app 对应的 key,可自行替换
String appkey = "GH4u6fBaYqABoG7bgwAkn5";
String masterSecret = "iMPZBVYZYPAfyZSnWVsAs";
// sha256 加密,使用 org.apache.commons 包中自带的加密方法,需将加密后数据一 起上传
String sign = DigestUtils.sha256Hex(String.format("%s%d%s", appkey, timestamp, masterSecret));
JSONObject requestDataObject = new JSONObject();
requestDataObject.put("sign", sign);
requestDataObject.put("timestamp", timestamp);
// 建立连接,将数据写入内存
DataOutputStream out = new DataOutputStream(httpURLConnection.getOutputStream());
out.writeBytes(requestDataObject.toString());
out.flush();
out.close();
BufferedReader in = null;
String result = "";
// 将数据发送给服务端,并获取返回结果
in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
System.out.println(result);
}
}
查询用户画像
public class GetUserTagTest {
static String url = " https://openapi-gi.getui.com/v3/{appid}/query_tag";
public static void main(String[] args) throws Exception {
URL urlObj = new URL(url);
URLConnection con = urlObj.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) con;
// http 头部
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestProperty("Content-Type", "text/html;charset=UTF-8");
// 需上传的参数,userIdList和token,token为鉴权成功后返回的字符串
JSONObject requestDataObject = new JSONObject();
List userList = new ArrayList();
userList.add("b154c3fb51c213cbfb25edee3b55d127");
userList.add("124587587853829478436231112");
requestDataObject.put("token", "cb2b16456ba3943f19ed0b54e8902b53db2aa288a2e4d56ae88aff93e0f94eef");
requestDataObject.put("userIdList", userList);
// 建立连接,将数据写入内存缓冲区
DataOutputStream out = new DataOutputStream(httpURLConnection.getOutputStream());
out.writeBytes(requestDataObject.toString());
out.flush();
out.close();
// 发送数据给个像服务端,并获得返回结果
BufferedReader in = null;
String result = "";
in = new BufferedReader(new InputStreamReader(
httpURLConnection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
System.out.println(result);
}
}