文档中心 > 常见场景案例

无线端授权规范

更新时间:2020/12/09 访问次数:93044

无线端授权规范

目前无线端支持两种授权方式:JS 授权、Web Oauth授权。

如果您只需要调用JS 相关的API,仅使用JS 授权即可。

如果您需要获取accesstoken调用其他TOP API,可以使用Web Oauth授权。(无线端,请务必使用无线相关的样式,注意view参数设置wap

JS授权

取得用户同意后,部分需要开通权限的接口才能使用。若仍有部分接口不能使用,请检查自己应用权限包是否包含接口。

/**
* @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
}

 

Web Oauth授权

此流程要求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 淘宝子账号

 

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部