准备条件
介绍在进行认证及后续接口使用中需要提前准备的参数。
准备项 | 说明 |
项目公钥(X-Client-Id) | GrowingIO分配的项目公钥,请求时用来做身份校验的一串字符码。是所有接口的公共请求头参数。 获取方式:登录 GrowingIO 平台,选择对应的项目后,单击界面右上角 |
项目私钥 | GrowingIO分配的项目私钥,生成加密签名时使用。 获取方式:同上 |
项目ID(ai) | GrowingIO分配的项目ID。 获取方式:同上 |
project_uid | 项目UID。 登录GrowingIO平台,选择对应的项目后,页面 URL中projects后的值。 示例: 选择项目后页面URL为 |
tm | 当前请求的时间戳。 |
为保证数据安全,GrowingIO所有的API服务,请求Head中需要携带认证码。
生成加密签名auth
auth是通过认证算法计算出来的加密签名。
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", "申请时间戳")
申请认证码Authorization
调用此接口,获取到的code字段值即为认证码。此认证码将作为其他业务接口的请求头参数。
认证码使用说明:
获取新认证码后旧码失效。
认证码使用期限为自生成起30天,为防止多人使用出现的认证错误,建议每次使用都重新生成。(除接口存在并发请求的情况)
POST
https://www.growingio.com/auth/token
请求参数
Post body 采用 raw 格式上传而不是 key-value 键值对方式上传。如:project=123abc&ai=2a1b4018cd954ec2bcc69da5138bdb96&tm=1465020309123&auth=ab3i5dazoo58314l0qqrj1aslfj1ldfaqeroqi
请求头参数如下:
名称 | 类型 | 是否必传 | 描述 |
X-Client-Id | String | 是 | GrowingIO为各项目分配的公钥,请求时用来做身份校验的一串字符码。 |
请求body参数如下:
名称 | 类型 | 是否必传 | 描述 |
ai | String | 是 | GrowingIO中的项目ID。 |
project | String | 是 | 项目UID。 在GrowingIO中打开项目,浏览器URL中project字段后的值,即为UID。 |
tm | Long | 是 | 申请时间戳。 |
auth | String | 是 | 通过认证算法计算出来的加密签名。获取方式请参考:获取加密签名auth |
返回示例
{ "status":"success", "code":"2RhY0XZ9xyBfayAPm0aa5CoJhDJkEUcmRiBJBT6XyeIXhHrdz334Tf3I85Esm74Q" }
公共请求头参数
公共请求参数是指每个接口都需要使用到的请求参数。
请求参数 | 类型 | 描述 |
X-Client-Id | string | GrowingIO为各项目分配的公钥。 |
Authorization | string | 认证后获取到的认证码。请参考申请认证码Authorization |