欢迎登录

操作成功!

是否退出?

确认

接入指南

API文档

用户鉴权服务方案

SKEye开放平台通过鉴权签名串来验证请求的合法性,客户端需具备合法签名后才可使用SKEye接口。密钥的获取和鉴权签名串的生成方法如下:

1、申请应用密钥

● 登录www.sk-ai.com,注册账号并登录到控制台页面。

● 创建应用,获取到系统自动分配的一对密钥(API Key和API Secret)。

● 如果已创建应用,点开应用列表,即可查看应用的密钥信息。

2、签名示例

● 鉴权签名串生成后放入https请求的头部,并以Authorization为key;SKEye各平台SDK里含有完整的签名流程,开发者只需在初始化SDK的时候传入API Key和API Secret即可。

● 我们提供以下几种版本的SDK:iOS, Android, Windows, Linux , Unity 。

3、签名算法

如果你要自己实现签名算法,以水果识别接口说明如下:

水果识别接口的URL为 https://api.sk-ai.com/fruits

3.1 假设通过步骤1,你获取的密钥信息如下:

API Key = "15832dbe37310893213a2c490ce63a0e";
API Secret = "e424d05860ef64ce5840606388099ef4";

3.2 拼接有效的签名串

api_key + "&" + service_name + "&" + time

api_key为用户的API Key

service_name为用户要使用的服务名称

time为当前时间戳,长度10位,单位为秒

拼接有效签名串的结果,下文称之为oss(Orignal Signature String)

3.3 生成签名串

(1)API Secret与原始签名串拼接

api_secret + oss

api_secret为用户的API Secret

拼接后的结果,下文称之为secret_oss

(2)使用SHA256 算法对secret_oss进行加密签名

Sha256(secret_oss)

加密后的结果,下文称之为sha_signature

(3)加密签名串(sha_signature)和原始签名串(oss)进行拼接

sha_signature + oss

拼接后的结果,下文称之为signature

(4)签名串需要使用 Base64 编码。

根据签名方法signature= Base64(SHA256(API Secret + oss) + oss),其中API Secret为步骤1中获取,oss为3.2中拼接好的签名串,对(API Secret + oss)使用HA256算法进行加密签名,然后将oss附加到签名结果的末尾,再进行Base64编码,得到最终的signature。 注:此处使用的是标准的Base64编码,不是urlsafe的Base64编码,请注意。 以 Android 语言为例,其他语言参见SDK下载链接。

API Key = "15832dbe37310893213a2c490ce63a0e";
API Secret = "e424d05860ef64ce5840606388099ef4";
service_name = "fruits";
oss = "15832dbe37310893213a2c490ce63a0e&fruits&5254122985”
secret_oss = "e424d05860ef64ce5840606388099ef4"+"15832dbe37310893213a2c490ce63a0e&fruits&5254122985"
sha_signature = new SHA256Encrypt().bin2hex(secret_oss);
signature = sha_signature + oss;
signature = Base64.encodeToString(signature.getBytes(), Base64.DEFAULT);

注意:其它程序设计语言的鉴权签名生成过程,与上述过程一致。

3.4 使用签名串

//调用url接口,使用“水果识别服务”进行图片识别
service_name = “fruits”;
image_url = “http://img.mp.itc.cn/upload/20170720/c26a820ce52d4cb59813ca285642197e_th.jpg”;
//请求数据是字符串格式,注意本地图片数据/图片url都需要进行bas64编码
post_data = “service_name” = “fruits”+“&”+”image_url”=Base64(image_url);
device_info格式:”<设备唯一号|系统版本号|设备型号|SDK版本号|程序包名>”
(以Android平台为例)
post_data = “device_info” =
“< dwefwedwed221|Android5.0|M3note|V1.0.0|com.interjoy.skeyesdk>”+“&”+”image_url” = “aHR0cDovL3d3dy5zay1haS5jb20vUHVibGljL29iamVjdHNfYmlnL29iamVjdHNfdGVzdF8yNy5qcGc=”
//生成的鉴权签名串放在请求头的Authorization字段里面
connection.setRequestProperty("Authorization", signature);
//向服务器发送请求
outputStream.write(postData.getBytes("utf-8"));