用户变量上传API

anwei发表于:2019年12月09日 14:21:15

一.用户变量上传

获取认证码

为防止误传和恶意攻击, 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 signature

php

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

接口定义

URL

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);
    }

接口定义

URL

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);
}

接口定义

URL

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);
}

接口定义

URL

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);
}

接口定义

URL

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.