用户变量上传 API

he
Last updated 2 months ago

GrowingIO 支持通过离线的方式批量上传登录用户变量,配合 SDK 中上传的登录用户 id,可以在不发版的情况下更新用户变量规则。

1. 接口

post

https://data.growingio.com/:ai/loginUserId
Request
Response
Path Parameters
ai
required
string
项目 id
Headers
Access-Token
required
string
public Key
Content-Type
required
string
application/json
Query Parameters
auth
required
string
针对每条数据独立生成的认证,计算方式见本文档第二节
Body Parameters
userProperty1
optional
string
在 GrowingIO 系统内定义的用户属性 (如 gender)
userProperty2
optional
string
在 GrowingIO 系统内定义的用户属性(如 user_name)
loginUserId
required
string
登录用户 id
200: OK

Body 内的 userProperty 1-N 为您在 GrowingIO 系统内定义的用户属性的 key,如 user_name, gender 等。支持使用数组的方式一次上传多条数据,一次性最多上传 100 条,body 大小最大限制为 2M。

一次上传一条:

{
"loginUserId":"1234",
"user_name":"张三",
"gender":"男"
}

一次上传多条:

[
{
"loginUserId":"1234",
"user_name":"张三",
"gender":"男"
},
{
"loginUserId":"1235",
"user_name":"李四",
"gender":"女"
}
]

2. 认证

为防止误传和恶意攻击, GrowingIO 服务器会对收到的每条数据做校验,因此需要在 query 参数中提供校验码。校验码生成代码见下方示例,其中 keyArray 为 loginUserId,一次性上传多条时,使用逗号隔开,如上方示例中,第一条 keyArray 为 1234,第二条为 1234,1235

Java:

public 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 signature

PHP:

function authToken($projectKeyId, $secretKey, $keyArray)
{
$message="ai=".$projectKeyId."&loginUserId=".$keyArray;
return hash_hmac('sha256',$message, $secretKey, false);
}

3. 旧版本上传接口

之前使用旧版本上传接口的请尽快升级到新版本接口,避免数据上传结果和线上配置出现不一致。

post

https://data.growingio.com/saas/:ai/user
Request
Response
Path Parameters
ai
required
string
项目 id
Query Parameters
auth
required
string
针对每条数据独立生成的认证
Body Parameters
cs2
optional
string
用户属性2
cs1
required
string
登录用户 id
200: OK

旧版本上传接口使用 cs1-cs20 的方式上传用户属性,对应的签名计算中 keyArray 为 user_id:1234,1235。