数据管理API(GDPR)

anwei发表于:2019年12月09日 14:34:23

数据保护

2018年5月21日起,GrowingIO在Web、Android和iOS SDK中提供了以下的API供开发者调用满足客户网站或移动应用符合欧盟区的《一般数据保护条例》(GDPR)。

  • GrowingIO SDK提供默认是否开启数据采集的配置项

  • GrowingIO SDK提供关闭或开启全局数据采集的接口,开发者可在APP中任何场景时调用该接口

  • GrowingIO SDK提供获取该设备的设备ID接口,开发者可配合数据侧提供的接口删除或导出该设备的行为数据

Web JS

全局配置, 可以放到send之后

关闭或开启全局数据采集:

// 停止采集数据
window.gio('config',{"dataCollect": true}); // 全局配置, 可以放到send之后
// 采集数据 (默认)
window.gio('config',{"dataCollect": false});

获取访问用ID:

window.gio('getVisitUserId'); // 放在send之后

样例:

// 停止采集数据
window.gio('config',{"dataCollect": true}); // 全局配置, 可以放到send之后
//采集数据 (默认)
window.gio('config',{"dataCollect": false}); 
// 获取访问用户ID window.gio('getVisitUserId'); // 放在send之后


Android

全局配置项:

disableDataCollect()

关闭或开启全局数据采集:

// 停止采集数据 
GrowingIO.getInstance().disableDataCollect(); 
// 采集数据 (默认)
GrowingIO.getInstance().enableDataCollect();

获取访问用户ID:

GrowingIO.getInstance().getVisitUserId();

样例:

GrowingIO.startWithConfiguration(this, new Configuration() 
.disableDataCollect() // 停止采集数据
.useID() 
.trackAllFragments()); 
// 停止采集数据 
GrowingIO.getInstance().disableDataCollect(); 
// 采集数据 
GrowingIO.getInstance().enableDataCollect(); 
// 获取访问用户ID 
GrowingIO.getInstance().getVisitUserId();


iOS

全局配置项(无)

关闭或开启全局数据采集:

disableDataCollect enableDataCollect

获取访问用户ID:

getVisitUserId

样例:

// 停止采集数据
[Growing disableDataCollect]; 
// 采集数据 (默认)
[Growing enableDataCollect]; 
// 获取设备ID 
NSString *viId = [Growing getVisitUserId];


删除原始数据

为符合 GDPR 规范,GrowingIO 提供删除用户原始数据的功能。

  • visitUserId 是 GrowingIO SDK 生成的 cookie,您可以从导出的原始数据中获得。

  • 删除用户数据后,该部分用户的细节数据(包括用户细查数据、以该部分用户ID做数据查询) 都不会保留在GrowingIO平台;但汇总数据(比如 "访问用户量" )不会受影响。

  • 汇总数据不受影响的原因:GrowingIO收到该用户数据后启动汇总数据计算,这个过程是不可逆的。删除用户数据请求是在用户数据发送至GrowingIO之后的操作,该请求不会影响前置的汇总数据计算。请您知晓,汇总数据不受影响跟GDPR的要求没有任何相悖。

获取认证码

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

Java

  public String authToken(String projectKeyId, String secretKey, String keyArray) throws Exception {    
        String message = "projectId="+projectKeyId+"&visitUserId="+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}/deleteVisitor?auth={auth_token}

请求类型

POST

参数说明

参数说明

请求头参数

类型

是否必传

说明

Access-Token

string

Public Key

Content-Type

string

application/json

路径参数

类型

是否必传

说明

ai

string

项目ID。

查询参数

类型

是否必传

说明

auth

string

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

body参数

类型

是否必传

说明

visitUserId

array

用户ID。

body示例

{  
  "visitUserId":["abcdef","bcdefg",...]
}