专栏首页凯哥Java唯品会:授权流程说明

唯品会:授权流程说明

一、引言

您的应用和唯品会开放平台对接后,需要获取有关用户(包括供应商)受限访问的隐私数据(如:商品、订单等),为保证用户数据的安全性与隐私性,您的应用需要取得用户的授权。在这种情况下,您的应用需要引导用户完成“使用唯品会帐号登录并授权”的流程。 目前的授权过程采用OAuth2.0协议,如果想了解这个协议更多的技术细节请参见官方说明:http://oauth.net/2/。 如果您是ISV软件商需要引导用户到授权页面,并且这个用户拥有一个唯品会的账号和密码,同时完成此账号和供应商ID的绑定认证。步骤如下: 1,ISV软件商完成应用审核和沙箱联调 2,使用ISV软件的供应商到VOP站点完成 供应商身份的认证操作 (注:接入MarketPlace无需此步骤) 3,ISV软件引导供应商完成授权 4,供应商可以正常使用ISV软件

您可以根据自己的应用场景,选择适用的授权流程: Server-side flow 此流程适合Web应用,要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问授权服务器。 Native Application 此流程适合Mobile应用,同时应用无法与浏览器交互,但是可以外调用浏览器。

二、Server-side flow

此流程适合Web应用,要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问授权服务器。 授权流程分为两个步骤: 

2)授权页 用户操作:授权或取消授权 

 若用户点击“取消”按钮,会跳转到回调地址,地址上同时附有error为错误码,error_description为错误描述 

        2)请求授权用户授权  
              用户操作:授权或者取消授权

4)获取访问令牌

四、应用的验证授权流程

引导需要授权的用户到如下地址: https://auth.vip.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE

其中YOUR_CLIENT_ID替换为appkey,YOUR_REGISTERED_REDIRECT_URI替换为回调URL

换取Access Token https://auth.vip.com/oauth2/token? client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&request_client_ip=127.0.0.1&code=CODE 返回值包含access_token 使用获取到的access_token调用API

五、使用OAuth 2.0调用API

20180518更新:

1.OAuth2/token接口返回新增两个数据节点:refresh_expires_time/refresh_token

2.新增refreshToken服务(需要通过vipapis.com调用):

https://vop.vip.com/apicenter/apidetail?serviceName=vipapis.oauth.OauthService-1.0.0&categoryNo=4

OAuth模式下调用API接口 token为必输项。 直接使用参数传递参数名为 access_token http://myi.vip.com/api/account/info?access_token=abcd

六、授权有效期

程序调用接口时需判断接口的返回值,如果用户的access_token失效,需要引导用户重新授权。失效原因有以下几个: 用户取消了对应用的授权 access_token自然过期,access_token有效期为90天。 refresh_token有效期为1年

用户修改了密码,冻结了对应用的授权 唯品会发现用户帐号被盗,冻结了用户对应用的授权

七、接口说明

接口

说明

OAuth2/authorize

请求用户授权token

OAuth2/token

获取授权过的access token

OAuth2/token_info

授权信息查询接口

OAuth2/revoke_token

授权回收接口

/oauth2/authorize

1) 说明 请求用户授权token 2) URL https://auth.vip.com/oauth2/authorize 3) HTTP请求方式 GET 4) 请求参数

6) 示例 //请求: https://auth.vip.com/oauth2/authorize? client_id=0123456789&response_type=code&redirect_uri=http://myi.vip.com/index.html //同意授权后会重定向:http://myi.vip.com/index.html&code=23456

/oauth2/token

1) 说明 获取授权过的access token 2) URL https://auth.vip.com/oauth2/token 3) HTTP请求方式 POST 4) 请求参数

新增返回数据:

refreshAccessToken--string---刷新token

refreshExpiresTime–Date---刷新token过期时间

6) 示例 //请求: https://auth.vip.com/oauth2/token? grant_type=authorization_code&client_id=12345&client_secret=abcde&redirect_uri=myi.vip.com/index.h tml&request_client_ip=127.0.0.1&code=23456 //返回结果: { "access_token": "63945DC", "expires_in": 12340, "open_id": "69BA0D4" }

/oauth2/token_info

1) 说明 授权信息查询接口 2) URL https://auth.vip.com/oauth2/token_info 3) HTTP请求方式 POST 4) 请求参数

6) 示例 //请求: https://auth.vip.com/oauth2/token_info?access_token=63945DC //正常返回结果: { "access_token": "63945DC4F3A5AA8DF537833900713E8341EF430C", "create_at": "2015-03-13 17:24:20", "expires_in": 12340, "expires_time": "2015-03-13 20:50:00", "open_id": "69BA0D43AF9E3821EE93F72D3BB14724", "token_type": "Bearer" } //如果令牌已经被回收 { "code": 0, "msg": "token revoked" }

/oauth2/revoke_token

1) 说明 授权回收接口 2) URL https://auth.vip.com/oauth2/revoke_token 3) HTTP请求方式 POST 4) 请求参数

6) 示例 //请求: https://auth.vip.com/oauth2/ revoke_token?access_token=63945DC //正常返回结果: { "code": 0, "msg": "success" } //如果令牌无效 { "code": 30111, "msg": "access token invalid" }

来源:http://vop.vip.com/doccenter/viewdoc/33

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 单元测试框架系列教程6属性invocationCount、invocationTimeOut

    这篇我们来学习下@Test中另外两个属性invocationCount和invocationTimeOut,前面我介绍了timOut这个属性,知道是超时监控的功...

    凯哥Java
  • java获取properties的时候乱码解决

    凯哥Java
  • 高性能服务器架构思路(三)——分布式系统概念

    任何的服务器的性能都是有极限的,面对海量的互联网访问需求,是不可能单靠一台服务器或者一个CPU来承担的。所以我们一般都会在运行时架构设计之初,就考虑如何能利用多...

    凯哥Java
  • 认证鉴权与API权限控制在微服务架构中的设计与实现:授权码模式

    引言: 之前系列文章《认证鉴权与API权限控制在微服务架构中的设计与实现》,前面文章已经将认证鉴权与API权限控制的流程和主要细节讲解完。由于有些同学想了解下授...

    aoho求索
  • 一张图清晰解释微信三方平台获取授权流程

    微信公众平台体系,大家最为熟悉的,一个是公众号,另一个就是小程序。如果需要使用公众号的高级功能,那么大家首先想到的就是自组开发团队来干这些活儿。绝大多数情况下,...

    amc
  • RabbitMQ五种模型

    Work Queues,工作队列(又名:任务队列)。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。

    乐心湖
  • 深入学习Apache Spark和TensorFlow

    想要了解更多关于Apache Spark的信息,请在2016年2月在纽约出席Spark东部峰会。

    良莉
  • 如何使用Zookeeper实现HiveServer2的HA

    之前Fayson介绍了《如何使用HAProxy实现HiveServer2负载均衡》,这种方案也有一些弊端,如HAProxy本身就是单点,虽然可以通过Keepal...

    Fayson
  • 如何使用HAProxy实现Impala的负载均衡

    前面Fayson介绍过《如何使用Nginx实现Impala负载均衡》,正如之前所说Cloudera官网推荐并支持的负载均衡为HAProxy。所以Fayson就介...

    Fayson
  • Hyperledger也能实现Token代币

    中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

    netkiller old

扫码关注云+社区

领取腾讯云代金券