目前无线端支持两种授权方式:JS 授权、Web Oauth授权。
如果您只需要调用JS 相关的API,仅使用JS 授权即可。
如果您需要获取accesstoken调用其他TOP API,可以使用Web Oauth授权。(无线端,请务必使用无线相关的样式,注意view参数设置wap)
取得用户同意后,部分需要开通权限的接口才能使用。若仍有部分接口不能使用,请检查自己应用权限包是否包含接口。
/**
* @param options 参数,支持boolean型 function 或object 或者不传第1个参数 直接为function表示不强制授权
* @param [options.refresh=false] 是否重新授权 true: 即使已经有授权,会清掉之前的授权信息重启授权流程, false:授权有效直接返回授权成功
*/
Tida.doAuth(options,function(data){
if(data.finish){
// 授权成功 可以顺利调用需要授权的接口了
}else {
// 未能成功授权
}
});
// 另一种调用
Tida.doAuth(function(data){
if(data.finish){
// 授权成功 可以顺利调用需要授权的接口了
}else {
// 未能成功授权
}
});
// 强制授权 每次都会弹出授权框
Tida.doAuth(true, function(data){
if(data.finish){
// 授权成功 可以顺利调用需要授权的接口了
}else {
// 未能成功授权
}
});
data 格式:
{
errorCode: 0, //通用错误码
errorMessage: "用户已授权",
finish: true //true为授权成功 false授权失败 授权失败请参考data.errorCode
}
此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问淘宝的授权服务器。
无线端样式:
方式1:直接使用oauth.m.taobao.com域名,其他参数不需要变更(推荐)
方式2:使用oauth.taobao.com域名必须加 view=wap 参数来获取无线端的样式
1、请求入口地址
1)获取授权码(code)
正式环境:https://oauth.m.taobao.com/authorize
2)获取访问令牌(access_token)
正式环境:https://oauth.m.taobao.com/token
2、授权操作步骤
实际进行授权操作时,测试的数据 client_id、client_secret、redirect_uri 均需要根据自己创建的应用实际数据给予替换,不能拿示例中给出的值直接进行测试,以免影响实际测试效果。下图为Server-side flow 授权方式流程图,以下按流程图逐步说明。
1)拼接授权url
拼接用户授权需访问url ,示例及参数说明如下:
https://oauth.m.taobao.com/authorize?response_type=code&client_id=23075594&redirect_uri=http://www.oauth.net/2/&state=1212
参数说明 | |||
---|---|---|---|
名称 | 是否必选 | 参数值 | 参数释义 |
client_id | 必选 | 等同于appkey,创建应用时获得。 | |
response_type | 必选 | code、token | 授权类型 ,值为code、token。 |
redirect_uri | 必选 | 可填写应用注册时回调地址域名 | redirect_uri指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。要求与应用注册时填写的回调地址域名一致或顶级域名一致 。 |
state | 可选 | 可自定义,如1212等 | 维持应用的状态,传人值与返回值保持一致。 |
view | 必选 | wap | Wap对应无线端的浏览器页面样式。 |
force_auth | 可选 | true,如force_auth=true | appkey所属应用标签是“商家后台系统”、“内部应用”、“互动应用前台”;默认在用户已登录且对当前appkey授权有效情况下,直接返回授权回调,不会做授权更新操作;在授权url中加force_auth=true,则不管授权是否有效都会弹授权页面,用户点授权按钮后会更新授权并回调。 |
from_site | 可选 | fuwu,如from_site=fuwu | appkey所属应用标签不是“商家后台系统”、“内部应用”、“互动应用前台”;默认用户对当前appkey授权是否有效,都会弹授权确认页;在授权url中加from_site=fuwu,用户已登录情况下直接返回授权回调,不会做授权更新操作。 |
2)引导用户登录授权
引导用户通过浏览器访问以上授权url,将弹出如下登录页面。用户输入账号、密码点“登录”按钮,即可进入授权页面。
3)获取code
上图页面,若用户点“授权”按钮后,TOP会将授权码code 返回到了回调地址上,应用可以获取并使用该code去换取access_token;
若用户未点授权而是点了“取消”按钮,则返回如下结果,其中error为错误码,error_description为错误描述。分别如下图所示:
4)换取access_token
利用linux 的curl 命令 获取access_token(授权令牌),如下;对于应用程序,可以参考文档**示例**
这里的示例代码。
curl -i -d "code=OxlukWofLrB1Db1M6aJGF8x2332458&grant_type=authorization_code&client_id=23075594&
client_secret=69a1469a1469a1469a14a9bf269a14&redirect_uri=http://www.oauth.net/2/ "https://oauth.m.taobao.com/token
换取access_token请求参数说明 | |||
---|---|---|---|
名称 | 是否必选 | 参数值 | 参数释义 |
client_id | 必选 | 等同于AppKey,创建应用时获得。 | |
client_secret | 必选 | 等同于AppSecret,创建应用时获得。 | |
grant_type | 必选 | authorization_code | 授权类型 ,值为authorization_code |
code | 必选 | 上一步获取code得到 | |
redirect_uri | 必选 | 可填写应用注册时回调地址域名。redirect_uri指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。要求与应用注册时填写的回调地址域名一致或顶级域名一致 。 | |
state | 可选 | 可自定义,如1212等;维持应用的状态,传人值与返回值保持一致。 | |
view | 必选 | wap | Wap对应无线端的浏览器页面样式。 |
换取access_token返回值示例
{ "w2_expires_in": 0, "taobao_user_id": "263685215", "taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752", "w1_expires_in": 1800, "re_expires_in": 0, "r2_expires_in": 0, "expires_in": 86400, "token_type": "Bearer", "refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215", "access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215", "r1_expires_in": 1800 } |
换取access_token返回参数说明 | |||
---|---|---|---|
Key | 类型 | 示例 | 说明 |
access_token | string | 2YotnFZFEjr1zCsicMWpAA | Access token |
token_type | string | Bearer | Access token的类型目前只支持bearer |
expires_in | number | 10(表示10秒后过期) | Access token过期时间 |
refresh_token | string | 2YotnFZFEjr1zCsicMWpAA | Refresh token,可用来刷新access_token |
re_expires_in | number | 10(表示10秒后过期) | Refresh token过期时间 |
r1_expires_in | number | 10(表示10秒后过期) | r1级别API或字段的访问过期时间; |
r2_expires_in | number | 10(表示10秒后过期) | r2级别API或字段的访问过期时间; |
w1_expires_in | number | 10(表示10秒后过期) | w1级别API或字段的访问过期时间; |
w2_expires_in | number | 10(表示10秒后过期) | w2级别API或字段的访问过期时间; |
taobao_user_nick | string | 测试账号 | 淘宝账号 |
taobao_user_id | string | 706388888 | 淘宝帐号对应id |
sub_taobao_user_id | string | 2343535 | 淘宝子账号对应id |
sub_taobao_user_nick | string | 测试账号test:123 | 淘宝子账号 |