无可争议,无论什么样的开放平台,都会给开发者一个key,作为使用它api的标识,
怎么得到这样一个key,或者是实名注册,或者是公司名义,或者如何如何,
大差不差,都是那么些个东西。
淘宝开放接口亦然。
关于接口api的使用,以后再说。
但是这个用户授权的方式,现在使用的是——淘宝OAuth2.0服务
用的淘宝OAuth2.0的协议,其实之前还有一个top的协议,但是那个据官方说是不安全。所以转回头用这个淘宝OAuth2.0的国标协议。
作为开发者
你要拿到你客户的资料,怎么拿到,正大光明的拿到,
总要有方法吧,通过淘宝给你的工具就能拿到。
淘宝为什么相信你,因为你前面一大堆的认证,实名说明你通过了淘宝的认证。
仅仅是你有了资格。
你可以通过淘宝拿到客户的数据,但是能不能拿到,还要客户给你。淘宝这样就类似中介。
客户怎么给你,说简单一点,就是授权。授权你了,你就能通过淘宝提供的工具拿到数据。
那么工具是什么,就是api
怎么授权,就是上面这个玩意儿。
淘宝,我们作为开发者,需要了解他的接入体制。
top协议我在这里就不多说了,因为官方不推荐,推荐的是淘宝OAuth2.0服务
那么他是怎么个运行过程呢。看看官方给的图。
看不明白没有问题,其实他就是说两个,关键词。
1.回调地址
2.sessionkey
理解三个对象,你、你的客户、淘宝。
你的程序在你自己的服务器上,他的数据在淘宝的服务器上,你需要拿过来放到你的服务器上,
那么其实就是通过授权认证之后,形成了数据准备,然后在你的服务器上进行相关的逻辑实现。回调地址就是你的服务器的程序入口。
授权是通过OAuth2.0协议的。他的流程就是图上。
那么我作为开发者怎么做,我们的目标就是拿到sessionkey,有了这个你就能通过api调取用户的数据。
OAuth2.0是怎么做到的
1.你把你申请到的appkey之类的信息发给淘宝,让淘宝知道你是有资质的。会给你一个令牌,code,
2.淘宝转发,到 https://oauth.taobao.com/token,然后你会就能获得一个json的数据,里面就有你的sessionkey
ok,两个跳转之后,才能得到。
第一次地址:https://oauth.tbsandbox.com/authorize,传递方法get
第二次地址:https://oauth.taobao.com/token,传递方式post
第二个之于php而言,用的是curl,post传递方式,其实也不难。
ok这就是他的OAuth2.0服务的过程。
光说不练假把式。代码先放到这里,用的是本机+沙箱进行的测试。稍后我会编辑这个文章的。
//header
header("Content-type: text/html; charset=utf-8");
include "/src/TopSdk.php";//注意路径
include "/api/user.php";
include "/api/goods.php";
include "/api/msg.php";
include "/common/page.php";
include "/common/common.php";
include "/db/db.php";
$nowTime = time();//目前标准时间。
$c = new TopClient;
$c->appkey = "自己的appkey";
$c->secretKey = "sandbox6a2e60d4124feddfcf8db15e8";
$c->format = "json";
/**
* 访问路径 利用淘宝OAuth2.0服务
* @沙箱url: https://oauth.tbsandbox.com/authorize?client_id=你自己id&response_type=code&state=1&redirect_uri=http://localhost/taobao/
* @获取url: https://oauth.tbsandbox.com/token
* @沙箱账号: sandbox_b_00 sandbox_c_1
* @密码: taobao1234
* @登出: https://oauth.tbsandbox.com/logoff
*/
if((isset($_GET['code'])) and (!isset($_COOKIE['uid'])))
{
$code = $_GET['code'];
$postStr="client_id=自己的id&client_secret=sandbox6a2e60d4124feddfcf8db15e8&grant_type=authorization_code&code=".$_GET['code']."&redirect_uri=http://localhost/taobao";
$sessionKey = oauthGetSessionKey($code,$postStr);
freshUserTable($c,$sessionKey);
refreshGoodsTable($c,$sessionKey);//刷新商品表
}
else
{
if(isset($_COOKIE['uid']))
{
$uid = $_COOKIE['uid'];
$dbObj3 = new Db('user');
$tmp = $dbObj3->getOne("SELECT access_token FROM user WHERE uid='".$uid."'");
$sessionKey = $tmp['access_token'];
$dbObj3->mysql_close();
}
else
{
echo "请重新登录!";
?>
<a href="https://oauth.tbsandbox.com/authorize?client_id=自己的id&response_type=code&state=1&redirect_uri=<?php echo urlencode('http://localhost/taobao/'); ?>">请登录淘宝账号</a>
<?php
exit();
}
}
里面有一些方法,稍后贴出。