一、WEB授权方式:

对于WEB授权开发方式而言,您的app不会在阿里巴巴应用市场售卖,那么您需要完成完整的授权过程,请参考如下授权流程

二、WEB端授权流程详解
授权及使用授权时序图

如果已经授权并且得到refreshToken,那么可以参考refreshToken换取accessToken流程详解一节;如果是首次授权,那么授权流程如下:

1) 用户使用app,访问在 1688 的隐私数据

2) app发起授权请求

https://auth.1688.com/oauth/authorize?client_id=xxx&site=1688&redirect_uri=YOUR_REDIRECT_URL&state=YOUR_PARM

a) client_id:app注册时,分配给app的唯一标示,又称appKey

b) site:site参数标识当前授权的站点,直接填写1688

c) redirect_uri: app的入口地址,授权临时令牌会以queryString的形式跟在该url后返回。注意参数中回调地址的域名必须与app注册时填写的回调地址的域名匹配。

d) state:可选,app自定义参数,回跳到redirect_uri时,会原样返回

3) 用户输入用户名密码,并确认授权

4) 返回临时授权码code给app 
具体返回方式,参照redirect_uri说明

5) 使用code获取令牌

https://gw.open.1688.com/openapi/http/1/system.oauth2/getToken/YOUR_APPKEY?grant_type=authorization_code&need_refresh_token=true&client_id= YOUR_APPKEY&client_secret= YOUR_APPSECRET&redirect_uri=YOUR_REDIRECT_URI&code=CODE

注:此接口必须使用POST方法提交;必须使用https

getToken接口参数说明:

a) grant_type为授权类型,使用authorization_code即可

b) need_refresh_token为是否需要返回refresh_token,如果返回了refresh_token,原来获取的refresh_token也不会失效,除非超过半年有效期

c) client_id为app唯一标识,即appKey

d) client_secret为app密钥

e) redirect_uri为app入口地址

f) code为授权完成后返回的一次性令牌

g) 调用getToken接口不需要签名注:如果超过code有效期(2分钟)或者已经使用code获取了一次令牌,code都将失效,需要返回第二步重新获取code

6) 返回令牌 
getToken返回结果:{"aliId":"8888888888","resource_owner":"xxx","memberId":"xxxxxxx","expires_in":"36000","refresh_token":"479f9564-1049-456e-ab62-29d3e82277d9","refresh_token_timeout":"20121222222222+0800","access_token":"f14da3b8-b0b1-4f73-a5de-9bed637e0188"} 
说明:resource_owner为登录id,memberId为会员接口id,aliId为阿里巴巴集团统一的id,refresh_token_timeout表示refreshToken的过期时间

7) 使用令牌访问用户隐私数据 
例如访问以下api : http://gw.open.1688.com/openapi/param2/1/cn.alibaba.open/member.get/1?memberId=xxx&access_token=ACCESS_TOKEN&_aop_signature=SIGENATURE 
签名示例见API签名规则

、refreshToken换取accessToken流程详解

换取accessToken流程

如果refreshToken有效并且accessToken已经过期(超过10小时),那么可以使用refresh_token换取access_token,不用重新进行授权,然后访问用户隐私数据。

注意:如果refreshToken已经超过了半年的有效期,用户修改密码,用户订购到期或者用户通过取消授权工具取消了对app的授权,那么都需要用户重新授权获取refreshToken

换取accessToken的url示例如下:

https://gw.open.1688.com/openapi/param2/1/system.oauth2/getToken/YOUR_APPKEY请求参数如下:

grant_type=refresh_token&client_id=YOUR_APPKEY&client_secret=YOUR_APPSECRET&refresh_token=REFRESH_TOKEN
注:此接口必须使用POST方法提交;必须使用https

a) 此处grant_type参数必须为refresh_token,表示通过refreshToken换取accessToken,而不是通过临时code换取

b) 调用getToken接口时不需要签名

、换取新的refreshToken流程详解

换取refreshToken流程

如果当前时间离refreshToken过期时间在30天以内,那么可以调用postponeToken接口换取新的refreshToken;否则会报错。

注意:有自动功能的应用(用户不进入应用主页也能使用第三方应用,因为在应用后台可以自动调用api处理用户数据,如自动重发类的应用)才需要调用此接口。如果没有自动功能,那么不需要调用,因为用户必须在应用主页操作才能获取以及修改用户数据,所以即使refreshToken过期了,用户再次通过应用市场进入应用主页时授权一次即可

换取refreshToken的url示例如下:

https://gw.open.1688.com/openapi/param2/1/system.oauth2/postponeToken/YOUR_APPKEY请求参数如下:

client_id=YOUR_APPKEY&client_secret=YOUR_APPSECRET&refresh_token=REFRESH_TOKEN&access_token=ACCESS_TOKEN返回结果类似getToken的返回结果:

{"aliId":"8888888888","resource_owner":"xxx","memberId":"xxxxxxx","expires_in":"36000","refresh_token":"479f9564-1049-456e-ab62-29d3e82277d9","access_token":"f14da3b8-b0b1-4f73-a5de-9bed637e0188","refresh_token_timeout":"20121222222222+0800"}
注:此接口必须使用https,get和post都行

a) 调用postponeToken接口需要授权,所以必须带上access_token参数

b) 调用postponeToken接口时不需要签名

c) refresh_token参数表示当前使用的refreshToken,如果refreshToken的有效期和当前时间的差值小于30天,那么调用此接口后当前使用的refreshToken失效,返回一个新的refreshToken

五、签名规则

一、API签名算法及工具

API签名算法及工具

二、API签名串组装规则

在1688开放平台,url请求的多个参数都要参与签名(与文件上传有关的api中,文件字节流那个参数不参与签名),下面以两个参数为例,假设请求的url格式如下所示: 
http://gw.open.1688.com/openapi/param2/1/system/currentTime/1000000?b=2&a=1(appKey=1000000, 假设 secretKey=test123)

参照签名算法说明,签名串s组装规则为: 
1、 构造签名因子:urlPath。url 中的一部分,我们称之为urlPath,从协议(param2)开始截取,到“?”为止,urlPath=param2/1/system/currentTime/1000000 
2、 构造签名因子:拼装的参数。参数 b=2&a=1,首先将参数的key和value拼在一起,得到b2和a1,然后按照首字母排序,得到a1和b2,最后按顺序拼在一起得到a1b2 
3、 合并两个签名因子。把前两步的字符串拼起来,得到s = param2/1/system/currentTime/1000000a1b2 
4、 对合并后的签名因子执行hmac_sha1算法。 Signature=uppercase (hex (hmac_sha1 (s, secretKey)) 得到签名33E54F4F7B989E3E0E912D3FBD2F1A03CA7CCE88 
——secretKey为签名密钥,与urlPath中的appKey(1000000)对应 
——hmac_sha1为通用的hmac_sha1算法,各编程语言一般都对应类库 
——hex为转为十六进制 
——uppercase为转为大写字符

说明:API签名算法主要是使用urlPath和请求参数作为签名因子进行签名,主要针对api 调用

三、参数签名算法及工具

参数签名算法及工具

四、参数签名串组装规则

在1688开放平台,用户在客户端访问app时app发起的授权请求url如下所示 :( 注意:只有客户端或WEB端授权流程中的"app发起授权请求"这一步的签名才使用此规则,参见 客户端流程详情 ) 
http://gw.open.1688.com/auth/authorize.htm?client_id=YOUR_CLIENT_ID&site=china&redirect_uri=YOUR_REDIRECT_URL&state=YOUR_PARAM&_aop_signature=SIGNATURE 
注意:此处访问的是授权页面authorize.htm,并不是api调用,所以没有urlPath,不能用API签名算法,只是用请求参数作为签名因子进行签名。请求参数的拼装算法跟API签名一致

假设用户授权请求的参数为 client_id=10000&site=china&redirect_uri=http://localhost:8888&state=test( client_id为appKey,对应的签名密钥假设为 client_secret=abcd), 那么签名串的组装规则为 : 
1、 构造签名因子:拼装的参数 。 参数 client_id=10000&site=china&redirect_uri=http://localhost:8888&state=test, key和value拼在一起得到 client_id10000&sitechina&redirect_urihttp://localhost:8888&statetest, 然后按照首字母排序,排序后为 client_id10000&redirect_urihttp://localhost:8888&sitechina&statetest, 然后将排序后的数组拼在一起 ,得到最终的签名因子 data=client_id10000redirect_urihttp://localhost:8888sitechinastatetest 
2、 对最终的签名因子执行hmac_sha1算法 。 Signature=uppercase (hex (hmac_sha1 (data, client_secret)) 得到签名CA538FE6B2180496B77EB46D0EBB5A2EA7A2418B 
——client_secret为签名密钥,与值为10000(client_id参数的值)的appKey对应 
——hmac_sha1为通用的hmac_sha1算法,各编程语言一般都对应类库 
——hex为转为十六进制 
——uppercase为转为大写字符

说明:参数签名算法只使用请求参数作为签名因子进行签名,仅针对客户端或WEB端授权时请求临时令牌code

1688开放平台WEB端授权教程相关推荐

  1. php第三方开放平台,开放平台第三方产品授权教程

    lass="quote 15">有赞开放平台介绍: 有赞开放平台,是指通过与外部第三方连接,为商家创造更多价值的有赞生态建设部门.基于有赞系统开放API接口,连接各地靠谱的第 ...

  2. 微信开放平台开发第三方授权登陆(二):PC网页端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  3. 蚂蚁开放平台开发第三方授权登陆(三):Android端

    开发前提: 拥有支付宝账户登录授权业务入参pid值.拥有APPID.App支付宝登录功能并成功签约 一.需求 用户在APP点击登录后,选择第三方登录中的"支付宝",跳转到支付宝客户 ...

  4. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  5. web电商系统、电商平台WEB端交互原型模板、用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务、Axure原型、rp原型、电商原型、商城系统原型

    作品介绍:web电商系统.电商平台WEB端交互原型模板.用户中心.会员中心.优惠券.积分.互动社区.运营推广.内容推荐.商品展示.订单流程.订单管理.售后及服务等完整的电商体系功能架构和业务流程 Ax ...

  6. 企业办公oa系统医药OA办公后台管理会议管理用户管理物料管理活动管理/Axure医药内部管理平台/web端后台管理系统原型/医药OA系统/权限管理

    作品介绍:企业办公oa系统&医药OA办公后台管理&会议管理&用户管理&物料管理&活动管理/Axure医药内部管理平台/web端后台管理系统原型/医药OA系统/权 ...

  7. 蚂蚁开放平台开发第三方授权登陆(二):PC端

    在<蚂蚁金服开放平台开发前期准备>准备后,已经获取应用AppID以及应用私钥.支付宝公钥.回调地址.可以进行网站应用的开发. 一.需求 用户点击登录后,选择第三方登录中的"支付宝 ...

  8. web实现QQ第三方登录 开放平台-web实现QQ第三方登录

    应用场景 web应用通过QQ登录授权实现第三方登录. 操作步骤 1  注册成为QQ互联平台开发者,http://connect.qq.com/ 2  准备一个可访问的域名,如dev.foo.com 3 ...

  9. 淘宝开放平台的认证授权机制

    在所有的开放平台中,安全的问题都是平台和开发者要一起面对的一个难题,尤其是对于淘宝开放平台(TaoBao Open Platform,简称TOP)这样一个电子商务的开放平台来说,保护用户的隐私数据安全 ...

最新文章

  1. 2018 Google kickstart Problem A. Planet Distance
  2. join left 大数据_Java并发编程笔记-JDK内置并行执行框架Fork/Join
  3. 我的Android笔记--我对安卓系统的一些了解
  4. 设计模式-生产者消费者模式
  5. 如何查看CRM WebUI,C4C和Hybris里的页面技术信息
  6. Django返回数据给ajax,Django返回JsonResponse并在ajax请求中捕获数据
  7. 灵活的javaScript
  8. usermod+用户密码管理+mkpasswd
  9. 需求分析的图形工具——E-R图
  10. 【金融人士工具大全】整理不易,且珍惜
  11. 单片机和嵌入式系统的区别
  12. Docker基础(二)
  13. 读《天才在左 疯子在右》有感
  14. es集群状态yellow排查
  15. 食品经营许可证模板_食品流通许可证与食品经营许可证
  16. vlog用什么来剪辑?分享1个剪辑生活vlog的技巧
  17. 《关于组织申报2017年度高新技术企业的通知》
  18. 对于安装破解版BurpSuite无法用java打开注册机的问题
  19. 修改html内联样式的方法
  20. python - windows 之 win32api资料教程与函数大全

热门文章

  1. return 数组 php tp5,tp5.1 使用心得
  2. MATLAB图像处理基础知识2 im2bw
  3. 智能车单车组之平衡控制内扰分析
  4. js 获取滚动条的高度
  5. 太牛了!知识图谱原理与实战
  6. 0基础学习Python基础语法(0)-print()与变量
  7. parser.feed_提示,使用Universal Feed Parser驯服RSS
  8. 基于SEDA的异步框架设计与实现
  9. 用计算机写文教学后记,拜托了!教学后记怎么写啊?
  10. 使用insmod安装内核模块失败