授权签名与SDK
登录授权相关
@
1、什么是授权,如何授权?
所谓授权,即获取 Access Token ,应用获取到了Access Token 即意味着取得了用户的授权,可以替用户向TOP(开放平台)请求用户的隐私信息(如商品、订单等)。这里的Access Token(Oauth2.0协议,当前应用均默认该协议) 即是原来“TOP授权协议” 时取到的SessionKey。获取授权详细方法可点 这里 参考
2、Access Token(SessionKey) 的有效时长只有24小时,如何提高?
“在线订购”应用正式环境测试阶段,Access Token 有效时长固定24小时,无法提高,失效后需重新授权;应用上线后(需审核)Access Token有效时长会自动提高(和订购时长一致),各应用授权有效时长如下:
标签名称 | 正式测试环境 | 上线运行中 | 备注 |
在线订购应用 | 24小时 | 订购时长绑定 | 如应用上线后,用户订购1年,则Access Token有效1年。更详细说明参考这里; |
xTao合作网站 | 24小时 | 24小时 | |
商家后台系统 | 24小时 | 1年 | |
店铺模块前台 | 无session | 无session | |
店铺模块后台 | 24小时 | 订购时长绑定 | |
新业务 | 24小时 | 1年 |
@
3、授权报错: application callback can not match the redirect_uri (错误码:invalid_client),什么原因?
授权时请求url 中的uri 值与应用回调地址不一致导致,修改uri 和回调地址一致即可
4、授权1001 错误(此应用不允许当前用户访问,下图所示),如何解决?
该错误是给应用授权的用户未在应用授权列表里,登录开放平台应用“授权管理”页面,绑定需授权用户即可。只有授权是小部分人使用的应用需要设置(如商家后台系统、未上线的在线订购应用)。
5、使用code 获取Access Token时,报如下错误,如何处理?
"error": "invalid_client", "error_description": "authorize code qexkqiJRNXJXEPTjPTWYYsK5486529 invalidate,please authorize again."
授权后回调地址上取得的code 只能使用一次,如果重复使用,则报该错误。重新授权或code 重试即可
6、程序如何判断授权(Access Token)失效时间?
应用程序可记录用户授权时间,再结合在获取Access Token 时返回的expires_in ( Access Token有效时间,单位秒)即可判断。
7、应用如何支持子账号授权?
1)应用授权管理页面勾选“支持淘宝子账号登录授权”;2)主账号给应用授权;3)主账号登录卖家中心,给子账号授予应用权限
8、在线订购应用上线用户订购后,应用程序本身需要做什么操作,或者是怎么去判断用户订购的版本信息等?
用户(卖家)订购后在我购买的服务里能看到应用,点"立即使用"就会进入授权页面(系统自动完成,和正式环境区别是,正式环境需给出授权URL让用户访问),用户授权后TOP会返回CODE 参数到回调地址上,ISV 用这个参数使用POST方式获取到卖家nick 等信息(详细参考这里)。然后再调用服务平台API (点 这里 查看)进行判断,用户订购的时长,何种套餐等,之后应用再给予相应的权限。
补充:用户首次访问(从“卖家中心--我购买的服务”进入),有弹出授权页面,授权后返回CODE给应用并据此取得nick可判断用户身份。虽在这之后第二次、第三次访问应用,并未弹出授权页面,但CODE仍会返回到回调地址上
9、有3个淘宝店铺,现需要在一个应用下,取三个店铺的商品信息,用淘宝taobao.items.inventory.get +sessionkey只能取到一个店铺的商品信息。这种情况要如何处理?
分别取到3个店铺的sessionkey,获取方法可参考 //open.taobao.com/doc/detail.htm?id=101423 。获取后参考如下例子获取商品信息:
如店铺A 下面有appkey (888 ),现想用taobao.items.inventory.get 取店铺B 的商品 。
A)取店铺A 商品时,是店铺A 给888授权并取得sessionkeyA,然后调api 时传人sessionkeyA 获取店铺A 商品。
B)取店铺B商品时,是店铺B给888授权并取得sessionkeyB,然后调api 时,传人sessionkeyB获取店铺B的授权。
10、授权常见错误及说明
错误信息 | 错误原因 |
request method must be get/post | 该请求必须用GET或POST方法 |
client_id is empty | client_id(即appkey)不能为空 |
response_type is empty | response_type不能为空 |
redirect_uri is empty | redirect_uri不能为空 |
grant type is empty | grant type不能为空 |
authorize code is empty | authorize code不能为空 |
unsupported response type, the response type must code or token | response type的值必须为code或者token |
redirect_uri is invalidate | redirect_uri 和在开发者中心注册的回调地址不一致 |
the grant type unsupported | grant type值无效 |
authorize reject | 用户拒绝授权 |
authorize code expire | authorize code失效,请重新授权 |
authorize code xxxx invalidate,please authorize again. | authorize code失效,请重新授权 |
client_secret is invalidate | app secret校验失败 |
xss chars included in params, such as <, >, ', " | 请求参数中带有以下字符:<, >, ', " |
The Application already Bind with user ids:xxx | 授权用户未在开发者中心“授权管理”页面绑定 |
Can not find the client_id:xxxxx | client_id(即appkey)不存在 |
Application need publish | 只有状态为“正式环境测试”和“上线运行中”的应用才允许授权 |
Application xxx need purchase | 必须先订购才能使用 |
app call back is invalidate | 应用的回调地址不合法 |
application callback can not match the redirect_uri | redirect_uri和事先配置的回调地址不匹配 |
only support http or https | 回调URL只支持https或http协议 |
application in black list,access forbidden. | app存在黑名单中 |
The application don't need session | 此应用不需要session key,不用刷新session key |
session key num is larger than xx | 有效session key个数超过上限 在控制台中的授权管理里面进行设置。 |
userid is invalidate | userId 不存在 |
login failure | 用户登录失败 |
login sign failure | 无线登录签名校验失败 |
taobao staff can't accredit | 淘宝小二不允许访问 |
subuser can't access | 应用不支持子账号访问 |
parent account forbid this sub account to access app. | 父账号未授权此子账号访问应用 |
parent account forbidden | 父账号未授权或授权已过期 |
refresh token is empty | refresh token为空 |
refresh token is error:xxxx | refresh token内容有误解析失败 |
refresh token is invalid | refresh token已经失效 |
refresh times limit exceed | 刷新次数超过上限,一个session key一天最多可刷新60次 |
session expire | 当前会话已经过期,可能用户浏览器暂停太久已经超时 |
OAUTH SERVER ERROR:xxxxx | 系统内部错误,请重试 |
Iossdk params is lack | 缺少ios sdk协议参数 |
iossdk track_id is invalid | ios sdk协议参数track id校验失败。建议核对一下app secret |
iossdk params check failed | ios sdk协议参数校验失败 |
签名SDK相关
@
1、什么是签名(sign),如何生成?
参考文档 //open.taobao.com/doc/detail.htm?id=101617 (第一部分 sign 相关内容)
2、调用api 报“Invalid signature”错误,什么原因?
1)AppSecret错误,如输入了错误的AppSecret 或AppSecret 被重置过
2)生成签名时的参数 和 http请求时参数不一致导致错误。
3)签名方法有误,建议参考我们提供示例代码 //open.taobao.com/doc/detail.htm?id=112 。
3、sdk的作用及如何下载?
淘宝开放平台的SDK是由程序自动化生成的代码包,其中包含了已经开放的API和相应的请求、加密、返回解析等一些必要的功能。登录到“开发者中心”通过应用证书页面即可下载(下载时选择权限对应的sdk),详细可参考//open.taobao.com/doc/detail.htm?id=101618
4、appkey有api 调用权限,为什么下载到的sdk中未包含相应的类?
下载sdk时未选择“权限对应的sdk”导致,进入证书页面重新下载
5、java sdk中如何设置返回数据格式;及sdk是否支持自定义接口方法?
TaobaoClient client = new DefaultTaobaoClient ()此处括号里面加xml 或json 即可指定 ;不支持自定义接口
FAQ
- 关于此文档暂时还没有FAQ