一直想研究下API是如何实现的,买了本书看的一头雾水,想学习下PHP方面的又找不到适合的教程,想通过酷家乐沙盒模型进行实际的操作演练又无法正常登录。现在满脑子头大。
酷家乐开放平台的文档写的还是比较全的,但没那么细,采用的案例也是使用的JAVA语言,对于我这种看不明白的人是一头雾水。我只知道,要操作就需要先登录验证。
API的验证方式有很多种,酷家乐开放平台的API接口权限应该是这样的:
本体系下的所有接口都使用同一套鉴权规则,通过服务端鉴权校验的接口才会被正常地、合法地执行接口文档中描述的业务逻辑。商家和酷家乐进行商务合作之后,酷家乐将会分配给商家一组appkey和appsecret,这两个参数在接口鉴权中起到了最重要的作用。
规则
参数 | 是否必须 | 含义 |
---|---|---|
appkey | 是 | 商家和酷家乐商务合作之后,酷家乐分配给商家的appkey。这会是一个10位长度的字符串。 |
timestamp | 是 | 格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数,比如:1485878400000。注意,一些编程语言自带的库获取到的时间戳是精确到秒,这时需要乘以1000。 |
appuid | 否 | 第三方用户的ID。不是所有接口都需要这个参数,具体的接口文档中会在URL Query Param注明该接口是否需要这个参数。 |
sign | 是 | 签名值,根据appuid是否存在,有两种不同的计算方式。如果appuid不存在:sign = md5(appsecret + appkey + timestamp)。如果appuid存在:sign = md5(appsecret + appkey + appuid + timestamp)。注意:appsecret我们不可在网络中传播,而只是用于在计算sign值的时候使用。appsecret只应该保存在商家应用的服务端以及酷家乐的服务端,请避免泄露,否则导致安全问题,酷家乐有权封禁商家的接口调用。 |
例如,我们有一个接口 GET https://openapi.kujiale.com/v2/test
,接口文档中描述需要URL Query Param为test_param,那么最后调用的时候应该是类似:
GET https://openapi.kujiale.com/v2/test?appkey=[appKey]×tamp=[timestamp]&sign=[sign]&test_param=123
其中sign的计算方式为:sign = md5(appsecret + appkey + timestamp)
。
如果接口文档中URL Query Param还注明需要appuid,类似:
GET https://openapi.kujiale.com/v2/test?appkey=[appKey]×tamp=[timestamp]&appuid=[appuid]&sign=[sign]&test_param=123
其中sign的计算方式为:sign = md5(appsecret + appkey + appuid + timestamp)。
编者小节
虽然小编感觉自己看明白了,也转换成了PHP,但测试沙盒系统的时候却总是出现100004错误,提示"request time out";有点感觉锁开到一半卡在那边的感觉,这让小编着实受不了。
现在小编正在积极联系酷家乐平台,看是否是沙盒环境出现了问题,还是小编数据上的有误,请各位关注期待吧。