淘宝对接(二)
完成淘宝对接(一)的内容后,我们获得非常重要的App Key及App Secret。但如果想访问商户数据(如商品、订单等)还需要获取访问商户数据的授权令牌 Access Token。获取用户授权的流程可以查看淘宝文档:用户授权介绍。
尽管用户授权文档比较详尽地说明了申请流程。但在这里我还是挑出一些我当时不太明白的步骤进行讲解:
1. 获取授权码(即在"用户授权文档"中提到的code)。以下是文档提到的获取流程图:
1.1 拼接授权url:
https://oauth.taobao.com/authorize?response_type=code&client_id=App Key(App Kep的值)&redirect_uri=http://www.oauth.net/2/(该地址为设置应用时填写的回调URL而且必须可以被淘宝访问)&state=1212&view=web。
1.2 将上面拼接好的url直接复制黏贴到浏览器地址栏中(建议使用火狐或Google浏览器进行该操作)。回车后转到下面的授权页面。
1.3 商户填入用户名及密码进行授权。授权完成后页面会跳转并在地址栏上获取到授权码:code。
1.4 获得授权码后可以使用程序的方式获取Access Token。以下为C#语言实现的例子。文档中有其他语言的实现例子
private void GetAccessToken(string Appkey, string AppSecret, string Code, string redirect_url)
{
WebUtils webUtils = new WebUtils();
IDictionary<string, string> pout = new Dictionary<string, string>();
pout.Add("grant_type", "authorization_code");
pout.Add("client_id", Appkey的值);
pout.Add("client_secret", AppSecret的值);
pout.Add("code", Code刚获得的授权码);
pout.Add("redirect_uri", redirect_url设置应用时填写的回调URL。1.1步骤的图);
string output = webUtils.DoPost("https://oauth.taobao.com/token", pout);
Console.Write(output);
WriteFile("Token", output);
Console.ReadLine();
}
运行后淘宝会返回以下事例信息。里面就包含有Access Token。
2. 淘宝安全性
2.1 淘宝有一套安全设定。Access Token是有一个有效时间的。在淘宝文档:应用授权规则中有详细描述不同环境下Access Token的有效时间是多长。查看应用管理中自己应用的状态便可以知道目前应用是处于什么环境。如下图所示:应用处于正式测试的环境。
2.2 除Access Token有会有时效性外,淘宝更设有应用安全等级。同样在淘宝文档:应用授权规则中有详细描述
淘宝开放平台对API分为r1,r2,w1,w2四个级别。应用分为0,1,2,3四种安全级别的标记。不同的API级别(r1,r2,w1,w2)根据应用的安全级别(0,1,2,3)有不同的有效时间。这些有效时间在获取Access Token时候会标识在返回的数据中(以秒为单位)。
更简单地说有这些有效时间会影响到你是否能调用淘宝API访问淘宝获取数据。淘宝文档:开发平台安全等级说明(淘宝文档应用授权规则的补充)有详细说明怎样查询什么API属于哪个级别。提升应用的安全级别能令API的级别提高。也就是使API的有效时间延长。淘宝文档:开发平台安全等级说明附带有怎样提高应用安全等级的指引。
2.3 淘宝API有自己所属的权限组。也就是说API只能在自己所属的权限组内使用。不能获取其他权限组的信息。淘宝文档:应用权限说明有详细介绍。