旧-帮助文档
回到 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. 术语
  • 2. 认证
  • 3. API 定义
  1. API

GrowingIO API 认证

PreviousAPINext广告监测链接创建服务 API

Last updated 6 years ago

1. 术语

  • 公钥( X-Client-Id):GrowingIO 分配的项目公钥,请求时用来做身份校验的一串字符码,您可以在 GrowingIO 后台点击右上角齿轮处进入【项目概览】页面中获取。

  • 私钥:双方所约定的加密算法的私钥,您可以在 GrowingIO 后台点击右上角齿轮处进入【项目概览】页面中获取。

  • ai:项目 ID,您可以在 GrowingIO 后台点击右上角齿轮处进入【项目概览】页面中获取。项目 ID 也是集成 SDK 时 setAccountId 所用的部分。

  • project: 项目 UID,访问项目的时候,页面 URL 以 /projects/:project_uid 开头,例如 https://www.growingio.com/admin/projects/nxog09md/dashboard中的nxog09md。

  • auth: 通过认证算法计算出来的签名,见第二部分示例代码

  • tm: 当前请求时间戳(unix 毫秒时间戳)

2. 认证

____________                  ___________    (ai/project/auth)   _____________
|          |                 |           |--(B) Authorization ->|             |
|          |--(A) Request  ->|   Client  |                      |             |
|  Client  |<-(D)-- Code  ---|   Server  |<--(C) Auth Grant  ---|  GrowingIO  |
|          |                 |___________|     (Auth Code)      |   Server    |
|          |                                                    |             |
|          |--(E)------------  Access Code  ------------------> |             |
|__________|                                                    |_____________|

GrowingIO 会给每个项目分配个公钥 (X-Client-Id) 和私钥。具体认证步骤如下。

  • 用户打开客户页面,会向 Client Server 发起一个请求

  • Client Server 在渲染页面时,会向 Growing Server 做认证请求,请求参数包括 ai, project 和 auth,头部参数包含 公钥(X-Client-Id )。

3. API 定义

Resource

POST https://www.growingio.com/auth/token

Authorization

在 Header 里面添加一个属性:

名字

类型

描述

示例

X-Client-Id

String

GrowingIO 分配的公钥,请在GrowingIO后台“项目配置”页面获取

X-Client-Id: 123abc

Query Parameter

名字

类型

描述

示例

ai

String

项目 ID

2a1b4018cd954ec2bcc69da5138bdb96

project

String

项目 UID

123abc

tm

Long

申请时间戳

1465020309123

auth

String

加密签名

ab3i5dazoo58314l0qqrj1aslfj1ldfaqeroqi

Post body 采用 raw 格式上传而不是 key-value 键值对方式上传。如:project=123abc&ai=2a1b4018cd954ec2bcc69da5138bdb96&tm=1465020309123&auth=ab3i5dazoo58314l0qqrj1aslfj1ldfaqeroqi

Response

   {
     "status":"success",
     "code":"2RhY0XZ9xyBfayAPm0aa5CoJhDJkEUcmRiBJBT6XyeIXhHrdz334Tf3I85Esm74Q"
   }

Auth 计算示例代码

Java 版本示例代码

public String authToken(String secret, String project, String ai, Long tm) throws Exception {
  String message = "POST\n/auth/token\nproject="+project+"&ai="+ai+"&tm="+tm;
  Mac hmac = Mac.getInstance("HmacSHA256");
  hmac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
  byte[] signature = hmac.doFinal(message.getBytes("UTF-8"));
  return Hex.encodeHexString(signature);
}

authToken("这里是 GrowingIO 给项目分配的私钥", "项目UID", "项目ID", "申请时间戳")

Scala 版本示例代码

import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
import org.apache.commons.codec.binary.Hex

def authToken(secret: String, project: String, ai: String, tm: Long) = {
 val messages = s"POST\n/auth/token\nproject=$project&ai=$ai&tm=$tm"
 val hmac = Mac.getInstance("HmacSHA256")
 hmac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"))
 val signature = hmac.doFinal(messages.getBytes("UTF-8"))
 Hex.encodeHexString(signature)
}

authToken("这里是 GrowingIO 给项目分配的私钥", "项目UID", "项目ID", "申请时间戳")

PHP 版本示例代码

<?php

function authToken($secret, $project, $ai, $tm) {
    $str = "POST\n/auth/token\nproject=${project}&ai=${ai}&tm=${tm}";
    $signature = hash_hmac("sha256", $str, $secret);
    return $signature;
}

authToken("这里是 GrowingIO 给项目分配的私钥", "项目UID", "项目ID", "申请时间戳")
?>

Python 版本示例代码

import hashlib
import hmac

def authToken(secret, project, ai, tm):
  message = ("POST\n/auth/token\nproject=" + project + "&ai=" + ai + "&tm=" + tm).encode('utf-8')
  signature = hmac.new(bytes(secret.encode('utf-8')), bytes(message), digestmod=hashlib.sha256).hexdigest()
  return signature

authToken("这里是 GrowingIO 给项目分配的私钥", "项目UID", "项目ID", "申请时间戳")
  1. Growing Server 收到数据后,会用请求的 body 和 key 做同样的加密,计算是不是匹配。如果匹配,返回认证码给 Client Server。

  2. Client Server 拿到认证码后,可以使用这个认证码去请求在 GrowingIO 中的数据,比如看板和单图。

1.术语
2.认证
3.API 定义