用户授权(OAuth2.0)介绍 

 

1.1号店OAuth2.0认证介绍

1号店开放平台,是基于1号店海量商品、用户数据,为广大的开发者提供开放数据的平台。

开发者申请到app_key、app_secret后,就可以基于您的智慧和1号店丰富的开放接口,创造出无穷的应用和乐趣。

 

在使用1号店openAPI之前,您需要做以下两步操作:

1.注册成为开发者,并申请到app_key、app_secret,即需要创建一个应用;

2.获取sessionKey,即access_token。

关于OAuth2.0的详细介绍,请参考OAuth2.0协议标准

 

标准OAuth2.0流程支持多种方式的认证授权,1号店的OAuth2.0实现,基于现状和实用性,只实现并支持Authorization Code授权方式。

以下是Authorization Code授权方式的交互流程。

 

2.OAuth2.0认证

注意:1.进行OAuth授权的商家账号必须购买了该服务且在有效期内(系统分配的测试账号、您授权的商家账号、购买了您服务的账号均在此列)

         2.进行OAuth授权的商家账号如果未购买该服务,系统会重定向到该服务的详情页。

授权过程分为两个步骤:

1.请求code;地址:https://member.yhd.com/login/authorize.do

示例:https://member.yhd.com/login/authorize.do?client_id=您的AppKey&response_type=code&redirect_uri=的回调地址(接收code)

注意:如果遇到authorize_code_expire错误,原因为:code存在时效性限制,1分钟就过期

请求参数说明:   

参数名字 参数选项 参数值 参数释义
client_id 必选   等同与appkey
response_type 必选 code  
redirect_uri 必选   授权成功或失败后重定向URL地址
scope 可选   保留字段
state 可选   维持应用的状态,传入值与返回值保持一致
view 可选 默认为web 保留字段

    

 

返回参数说明:

参数名字 参数选项 参数释义
code 正常结果 授权码
error 异常时返回 错误码
error_description 异常时返回 错误描述

 

2.请求access_token;地址:https://member.yhd.com/login/token.do

示例:https://member.yhd.com/login/token.do?client_id=您的AppKey&client_secret=您的AppSecret&code=上一步接收的code&grant_type=authorization_code&redirect_uri=的回调地址(接收accessToken)

请求参数说明:

参数名字 参数选项 参数值 参数释义
client_id 必选   appkey的值
client_secret 必选   appsecret
grant_type 必选 authorization_code  
code 必选   授权码
redirect_uri 必选   获取token失败时,重定向URL地址
scope 可选   保留字段
state 可选   维持应用的状态,传入值与返回值保持一致。
view 可选 默认为web 保留字段

 

返回参数说明(格式为json):

key 类型 选项 示例 说明
accessToken string 必选 2YotnFZFEjr1zCsicMWpAA AccessToken即sessionkey

expiresIn

number 可选 1371177282761

Access token到期时间,以毫秒计算(new Date()).getTime()

如果为空,则表示按次购买的应用,无过期时间

refreshToken String     刷新token
refreshExpiresIn number   1371177282761 refreshToken到期时间,以毫秒计算(new Date()).getTime()
userId Integer 必选 12345 用户ID
nickName string 必选 测试test 账户名称
userCode String 必选 test 账户编码
userType Integer 必选 1231231 用户类型(1:商家、2:商家子账号、3:供应商、4:运营、5:商必赢供应商)
merchantId Integer 必选 706388888 商家对应id
supplierId Integer 必选 1231231 供应商对应id
isvId Integer 必选 1231231 SBY账号对应id
{"accessToken":"4351da806756ccbb92c7870670f111","merchantId":52807,"nickName":"商必赢006",
"refreshExpiresIn":1470903294000,"refreshToken":"c414d50d119ace2e5097e87c885a",
"userCode":"sbyisvtest006","userId":85146,"userType":1}

3.refresh_token刷新&延长sessionKey即accessToken使用时间(http://open.yhd.com/opendoc.do?categoryId=165,2016年5月20号之前请完成修改)

主要针对appkey即应用为“卖家应用/在线订购应用”、“ 供应商应用/在线订购应用”

https://member.yhd.com/login/refreshToken.do

请求参数:

参数名

参数选项

参数值

参数解释

client_id

必选

 

 

client_secret

必选

 

 

grant_type

必选

refresh_token

 

refresh_token

必选

 

 

scope

可选

 

 

state

可选

 

 

view

可选

 

 

 

返回参数:

参数名

类型

说明

accessToken

String

 

refreshToken

String

 

expiresIn

Number

Access token到期时间,以毫秒计算(new Date()).getTime()

 

messageCode

String

成功“success”;其他都视为失败

message

 

 

refreshExpiresIn

 

 

messageCode可能出现的值:

 

messageCode返回值

说明

 

 

success

成功

 

 

refreshtoken _empty

refreshtoken为空

 

 

refreshtoken_expire

刷新token失效

 

 

refreshtoken_not_exist

刷新token不存在

 

 

clientid_not_exist

clientid不存在

 

 

clientid_empty

clientid为空

 

 

clientsecret_empty

clientsecret 为空

 

 

clientsecret _not_exist

clientsecret不存在

 

 

application_not_exist

client_id(即appkey)对应的应用不存在

 

 

accesstoken_not_found

对应的accessToken不存在,请确认该用户是否订购或者授权了该应用

 

 

other_error

失败,系统内部错误,请稍后再试

 

 

3.OAuth2.0认证&API接口调用demo

说明:

a. 该demo依赖于yhd-sdk-java.jar、servlet-api.jar;

b. 该demo仅作接入步骤示例,未考虑性能、异常等特殊场景。

c. 创建应用,获取app_key、app_secert以及测试账户。(非测试账户需授权,否则OAuth2会直接重定向至服务详情页提示购买

demo下载地址:http://luntan.yhd.com/forum.php?mod=viewthread&tid=1809&extra=page%3D1

该demo只帮助参照oauth2.0过程,api接口调用过程请参照文档----API调用方法详解
 

 

 

1.BS类应用接入

配置web.xml

 

启动jetty,访问localhost:8080/demo/authorize,按照提示输入测试账户的用户名&密码;

 

执行成功。

 

 

2.CS类应用接入

运行AppDemoCS.java,按照提示输入测试账户的用户名&密码;

 

输入获取到的code;

 

执行成功。

 

备注:CS类应用还可以不经过OAuth2.0直接获取sessionKey。路径是fuwu.yhd.com->我的服务->查看授权

 

 

提示

关闭