一.用户变量上传
为防止误传和恶意攻击, GrowingIO 服务器会对收到的每条数据做校验,因此需要在查询参数中提供校验码。
校验码生成代码见下方示例,其中 keyArray 为 loginUserId,一次性上传多条时,使用逗号隔开,如接口定义示例中,第一条 keyArray 为 1234,第二条为 1234,1235。
java
javapublic String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception {
String message = "ai="+projectKeyId+"&loginUserId="+keyArray;
Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"));
byte[] signature = hmac.doFinal(message.getBytes("UTF-8"));
return Hex.encodeHexString(signature);
}Scala
def authToken(projectKeyId: String, secretKey: String, keyArray: String): String = {
val message = s"ai=$projectKeyId&loginUserId=$keyArray"
val hmac: Mac = Mac.getInstance("HmacSHA256")
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"))
val signature = hmac.doFinal(message.getBytes("UTF-8"))
Hex.encodeHexString(signature)
}python
#coding:utf-8
import hashlib
import hmac
def authToken(projectKeyId,secretKey,keyArray):
message = ("ai=" + projectKeyId + "&loginUserId=" + keyArray).encode('utf-8')
signature = hmac.new(bytes(secretKey.encode('utf-8')), bytes(message), digestmod=hashlib.sha256).hexdigest()
return signaturephp
function authToken($projectKeyId, $secretKey, $keyArray)
{
$message="ai=".$projectKeyId."&loginUserId=".$keyArray;
return hash_hmac('sha256',$message, $secretKey, false);
}https://data.growingio.com/{ai}/loginUserId
POST
请求参数
请求头参数 | 类型 | 是否必传 | 说明 |
Access-Token | string | 是 | 项目公钥 |
Content-Type | string | 是 | application/json |
查询参数 | 类型 | 是否必传 | 说明 |
auth | string | 是 | 认证码,针对每条数据独立生成的认证。使用独立的认证码,详细见本页获取认证码页签。 |
body参数 | 类型 | 是否必传 | 说明 |
loginUserId | string | 是 | 登录用户ID。 |
userProperty1 | string | 否 | 在GrowingIO系统内定义的用户属性(如gender) |
userproperty2 | string | 否 | 在GrowingIO系统内定义的用户属性(如user_name) |
body内的userProperty1-N为您在GrowingIO系统内定义的用户属性的key,如gender、user_name等。支持使用数组的方式一次上传多条数据,一次性最多上传100条,body大小的最大限制为2M。
body示例
一次上传一条:
{
"loginUserId":"1234",
"user_name":"张三",
"gender":"男"
}一次上传多条
[
{
"loginUserId":"1234",
"user_name":"张三",
"gender":"男"
},
{
"loginUserId":"1235",
"user_name":"李四",
"gender":"女"
}
]二.维度分类上传
认证方式与用户属性上传类似,其中 keyArray 为 variable_name 的值,多条使用逗号分隔,如:1234,1235。 加密 Message 为 ai=$projectId&$variable_name=$keyArray (注意variable_name为实际变量名称)。
JAVA
public String authToken(String projectKeyId, String variableName, String secretKey, String keyArray) throws Exception {
String message = "ai="+projectKeyId+"&"+variableName+"="+keyArray;
Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"));
byte[] signature = hmac.doFinal(message.getBytes("UTF-8"));
return Hex.encodeHexString(signature);
}https://data.growingio.com/{ai}/classification/{variable_name}
POST
请求参数
请求头参数 | 类型 | 是否必传 | 说 |
Access-Token | string | 是 | 项目公钥 |
Content-Type | string | 是 | application/json |
路径参数 | 类型 | 是否必传 | 说明 |
ai | string | 是 | 项目ID。 |
variable_name | string | 是 | 用户变量标识符。 |
查询参数 | 类型 | 是否必传 | 说明 |
auth | string | 是 | 针对数据生成的认证,计算方式与上述类似。 |
body名称 | 类型 | 是否必传 | 说明 |
variable_name | string | 是 | 在GrowingIO系统内定义的用户属性,且为需要分类用户变量的标识符(如companyId) |
userProperty1 | string | 否 | 在GrowingIO系统内定义的用户属性(如companyName) |
userProperty2 | string | 否 | 在GrowingIO系统内定义的用户属性(如companyClass) |
body内的variable_name、userProperty1-N为您在GrowingIO系统内定义的用户属性的key。类似用户属性上传,支持是用户组的方式一次性上传多条数据,一次性最多上传100条,body限制大小为2M。
返回示例
200:OK
三.既有登录用户ID上传
含义:客户从登录用户ID的视角认为有一些用户是既有用户,而不是新用户。所以GrowingIO暴露了一个接口来定义某一些登录用户ID为既有用户,并不是新用户。同时,还提供上传登录用户的注册时间,来告诉GrowingIO该用户成为新用户的时间。
auth的计算需要将loginUserId的值拼接成keyArray,多条使用逗号分隔,如上述示例中的keyArray为abcdef,bcdefg。Java代码示例如下:
java
/**
* projectKeyId: 项目ID
* secretKey: 项目私钥
* keyArray: loginUserId用逗号拼接的字符串
*/
public String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception {
String message = "projectId="+projectKeyId+"&loginUserId="+keyArray;
Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"));
byte[] signature = hmac.doFinal(message.getBytes("UTF-8"));
return Hex.encodeHexString(signature);
}https://data.growingio.com/{ai}/user/exist
POST
请求参数
请求头参数 | 类型 | 是否必传 | 说明 |
Access-Token | string | 是 | 项目公钥 |
Content-Type | string | 是 | application/json |
路径参数 | 类型 | 是否必传 | 说明 |
ai | string | 是 | 项目ID。 |
查询参数 | 类型 | 是否必传 | 说明 |
auth | string | 是 | 针对数据生成的认证 |
body参数 | 类型 | 是否必传 | 说明 |
loginUserId | array | 是 | 登录用户ID字符串数组 |
register | number | 否 | 上传用户注册的时间戳 |
body示例
{
"loginUserId": ["abcdef", "bcdefg", ...],
"registerTime": 1514764800000
}四.(旧)接口定义
用户变量上传
旧版本上传接口使用 cs1-cs20 的方式上传用户属性,对应的签名计算中 keyArray 为1234,1235。加密 Message 为 ai=$projectKeyId&cs=$keyArray
如 Java:
public String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception {
String message = "ai="+projectKeyId+"&cs="+keyArray;
Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"));
byte[] signature = hmac.doFinal(message.getBytes("UTF-8"));
return Hex.encodeHexString(signature);
}https://data.growingio.com/saas/{ai}/user
POST
请求参数
请求头参数 | 类型 | 是否必传 | 说明 |
Access-Token | string | 是 | Public Key |
路径参数 | 类型 | 是否必传 | 说明 |
ai | string | 是 | 项目ID |
查询参数 | 类型 | 是否必传 | 说明 |
auth | string | 是 | 针对每条数据独立生成的认证,详细见本页面的获取认证码页签。 |
body参数 | 类型 | 是否必传 | 说明 |
cs1 | string | 是 | 登录用户ID。 |
cs2 | string | 否 | 用户属性2。 旧版本上传接口使用cs1-cs20的字段上传用户属性。 |
维度分类上传
旧版本上传接口使用 cs1-cs20 的方式上传用户属性,对应的签名计算中 keyArray 为 参数 cs2的值,多条用逗号拼接,如:1234,1235。 加密 Message 为 ai=$projectKeyId&cs=$keyArray如 Java:
public String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception {
String message = "ai="+projectKeyId+"&cs="+keyArray;
Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256"));
byte[] signature = hmac.doFinal(message.getBytes("UTF-8"));
return Hex.encodeHexString(signature);
}https://data.growingio.com/saas/{ai}/company
POST
请求参数
请求头参数 | 类型 | 是否必传 | 说明 |
Access-Token | string | 是 | 项目ID。 |
Content-Type | string | 是 | application/json |
查询参数 | 类型 | 是否必传 | 说明 |
auth | string | 是 | 针对每条数据独立生成的认证 |
body参数 | 类型 | 是否必传 | 说明 |
cs2 | string | 是 | 用户属性2,且为需要分类用户变量的标识符。 |
cs3 | string | 否 | 用户属性3。 |
cs4 | string | 否 | 用户属性4. |
