旧-帮助文档
回到 GrowingIO
  • GrowingIO 帮助文档
  • 快速提交工单
  • 快速上手-Web
  • 快速上手-移动端
  • 快速上手-小程序
  • 产品更新日志
  • 分析工具
    • 事件分析
    • 用户分群
    • 用户细查
    • 漏斗分析
    • 活动分析
    • 落地页分析
    • 分布分析
    • 智能路径
    • 留存分析
    • 留存魔法师
    • 活跃用户分析
    • 热图分析
      • Web 端热图
      • App 热图
    • 单图
    • 微信应用用户分析
    • 小程序-分享分析
  • 看板
    • 自定义首页
    • 概览看板
    • KPI看板(企业版)
    • 小程序预置看板
    • 微信内嵌页预置看板
    • 实时监控模板
    • 业务场景
  • GIO 小程序看数助手
  • 广告监测
    • 创建监测链接
      • 推广 App
      • 推广网页
      • 推广小程序(微信)
    • 数据报表
      • 应用级数据
      • 深度数据分析
      • 数据指标说明
    • 推广管理
      • 监测链接
      • 广告活动
      • 推广渠道
    • 渠道配置指南
      • 腾讯社交广告
      • 今日头条
      • 百度原生信息流
      • 微博超级粉丝通
      • 爱奇艺
      • Inmobi
      • 微信广告平台
      • 凤羽广告平台
      • bilibili(B 站)
    • 其他功能
      • 日志导出
      • 维度配置
      • 权限配置
      • 反作弊规则
      • 深度链接配置
    • 相关知识
      • UTM 参数使用指南
      • 创建小程序的推广码
      • 移动端转化归因
      • 默认的渠道来源跟踪
      • DeepLink 启用新域名
    • 广告监测FAQ
  • SDK 文档
    • SDK 简介与安全性说明
    • 各平台 SDK 支持明细
    • SDK 更新日志
    • Web JS SDK
      • Web JS SDK API
      • Web JS SDK 常见问题
    • Android SDK
      • Android 无埋点 SDK
      • Android 无埋点 SDK API
      • Android 半自动采集浏览事件
      • Android 埋点 SDK
      • Android SDK 常见问题
    • iOS SDK
      • iOS 无埋点SDK
      • iOS SDK API
      • iOS 半自动采集浏览事件
      • iOS SDK 1.X旧版本升级指导
      • iOS 埋点SDK
      • iOS SDK 常见问题
    • Hybrid SDK (App内嵌H5)
    • 小程序、小游戏以及内嵌页 SDK
      • SDK 更新日志 - 小程序 & 内嵌页 & 快应用
      • 微信小程序 SDK
        • mpvue+第三方插件 添加代码
      • 微信小游戏 SDK
      • H5 内嵌页 SDK
      • 支付宝小程序 SDK
      • 百度小程序 SDK
      • QQ 小程序 SDK
      • 字节跳动小程序 SDK
      • 快应用 SDK
    • React Native 无埋点 SDK
      • ReactNative 埋点 SDK
    • Flutter 埋点 SDK
    • Cordova 埋点 SDK
    • Weex 埋点 SDK
    • API Cloud埋点 SDK
    • AppCan 埋点 SDK
    • Java 埋点 SDK
    • PHP 埋点 SDK
    • GrowingIO Debugger
      • 验证打点事件
  • 数据模型
    • 用户模型
      • 访问用户
      • 登录用户
      • 用户属性
    • 事件模型
      • 什么是事件
      • 无埋点事件
        • 访问事件及属性
        • 页面事件及属性
        • 动作事件及属性
      • 埋点事件
        • 埋点事件及属性
    • 统计模型
      • 指标--事件的度量
      • 维度--事件的属性
      • 预定义的指标和维度
  • 数据定义
    • 用户变量
      • 登录用户变量
      • 访问用户变量
    • 页面级变量
      • 查询条件直接设置成页面级变量
    • 无埋点圈选
      • Web 圈选
      • App 端圈选 App
      • 电脑端圈选 App
      • 小程序数据定义
      • 微信内嵌页数据定义
      • 圈选指标管理
        • 合并简单指标
        • 复合指标
    • 埋点事件
      • 埋点事件级变量
      • 转化变量
    • 小程序事件和变量
  • 数据管理
    • 新版数据管理功能说明
    • 无埋点事件管理
    • 埋点事件管理
    • 变量管理
    • 合并事件管理
    • 计算指标
  • 系统配置
    • 组织管理
    • 项目管理
    • 用户管理
    • 权限管理
    • 爬虫规则
    • 账号管理
    • UTM 映射管理
    • IP及域名数据过滤
  • API
    • GrowingIO API 认证
    • 广告监测链接创建服务 API
    • 微信小程序二维码创建服务 API
    • 原始数据导出 API
      • 原始数据导出字段说明
        • 无埋点事件
        • 埋点事件与变量
        • 广告相关数据
        • 通用字段说明
      • 原始数据导出 2.0 API
      • 原始数据导出 1.0 API(已废弃)
      • 原始数据导出 API 的升级迁移
      • 原始数据导出格式及处理建议
    • 统计数据导出 API
    • 埋点数据上传API
    • 用户变量上传 API
    • 项目管理 API
    • 数据管理 API (GDPR)
    • API 更新日志
  • 常见问题
    • 基本问题
    • SDK 集成
    • 圈选常见问题
    • 指标和维度
    • 数据安全
    • 产品使用
    • 数据统计差异
    • 无效指标清理说明
  • 内容贡献者
  • 帮助文档问题反馈
Powered by GitBook
On this page
  • 用户变量上传
  • 1.1 接口
  • 1.2 认证
  • 1.3 旧版本上传接口
  • 维度分类上传
  • 2.1 接口
  • 2.2 认证
  • 2.3 旧版本上传接口
  • 既有登录用户ID上传
  • 3.1 接口
  • 3.2 认证
  1. API

用户变量上传 API

Previous埋点数据上传APINext项目管理 API

Last updated 6 years ago

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

用户变量上传

1.1 接口

POST https://data.growingio.com/:ai/loginUserId

Path Parameters

Name
Type
Description

ai

string

项目 id

Query Parameters

Name
Type
Description

auth

string

针对每条数据独立生成的认证,计算方式见本文档第二节

Headers

Name
Type
Description

Access-Token

string

public Key

Content-Type

string

application/json

Request Body

Name
Type
Description

userProperty1

string

在 GrowingIO 系统内定义的用户属性 (如 gender)

userProperty2

string

在 GrowingIO 系统内定义的用户属性(如 user_name)

loginUserId

string

登录用户 id

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":"女"
}
]

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

1.3 旧版本上传接口

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

POST https://data.growingio.com/saas/:ai/user

Path Parameters

Name
Type
Description

ai

string

项目 id

Query Parameters

Name
Type
Description

auth

string

针对每条数据独立生成的认证

Headers

Name
Type
Description

Access-Token

string

Public Key

Request Body

Name
Type
Description

cs2

string

用户属性2

cs1

string

登录用户 id

旧版本上传接口使用 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);
}

维度分类上传

2.1 接口

POST https://data.growingio.com/:ai/classification/:variable_name

Path Parameters

Name
Type
Description

ai

string

项目 id

variable_name

string

用户变量标识符

Query Parameters

Name
Type
Description

auth

string

针对数据生成的认证,计算方式与上述类似

Headers

Name
Type
Description

Access-Token

string

Public Key

Content-Type

string

application/json

Request Body

Name
Type
Description

variable_name

string

在GrowingIO系统内定义的用户属性,且为需要分类用户变量的标识符(如companyId)

userProperty1

string

在GrowingIO系统内定义的用户属性(如companyName)

userProperty2

string

在GrowingIO系统内定义的用户属性(如companyClass)

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

2.2 认证

认证方式与用户属性上传类似,其中 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);
}

2.3 旧版本上传接口

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

POST https://data.growingio.com/saas/:ai/company

Path Parameters

Name
Type
Description

ai

string

项目 id

Query Parameters

Name
Type
Description

auth

string

针对数据生成的认证,计算方式与上述类似

Headers

Name
Type
Description

Access-Token

string

Public Key

Content-Type

string

application/json

Request Body

Name
Type
Description

cs2

string

用户属性2,且为需要分类用户变量的标识符

cs3

string

用户属性3

cs4

string

用户属性4

旧版本上传接口使用 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);
}

既有登录用户ID上传

含义:客户从登录用户ID的视角认为有一些用户是既有用户,而不是新用户。所有GrowingIO暴露了一个接口来定义某一些登录用户ID为既有用户,并不是新用户。同时,还提供上传登录用户的注册时间,来告诉GrowingIO该用户成为新用户的时间。

3.1 接口

POST https://data.growingio.com/{ai}/user/exist

Path Parameters

Name
Type
Description

ai

string

项目 ID

Query Parameters

Name
Type
Description

auth

string

针对数据生成的认证,计算方式与上述类似

Headers

Name
Type
Description

Content-Type

string

application/json

Access-Token

string

项目公钥 public key

Request Body

Name
Type
Description

loginUserId

array

登录用户ID字符串数组

registerTime

number

上传用户注册的时间戳, 可选

上传Body的限制规则与上述其他接口一致,内容示例如下:

{
  "loginUserId": ["abcdef", "bcdefg", ...],
  "registerTime": 1514764800000
}

3.2 认证

auth的计算需要将loginUserId的值拼接成keyArray,多条使用逗号分隔,如上述示例中的keyArray为abcdef,bcdefg。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);
}
用户变量上传
1.1 接口
1.2 认证
1.3 旧版本上传接口
维度分类上传
2.1 接口
2.2 认证
2.3 旧版本上传接口
既有登录用户ID上传
3.1 接口
3.2 认证