记住用户名密码
对于未接触过OAuth 2.0授权协议的朋友,开始使用速卖通API时一定会觉得怎么弄得这么麻烦,的确,这个OAuth2.0是挺麻烦的,但它安全啊。另外相对于OAuth1.0来说,已经简单了好多了。先看看速卖通API授权流程吧,
简单三步:
(1)获取临时令牌;
(2)用临时令牌换取长时令牌以及访问令牌;
(3)访问令牌过期后用长时令牌刷新访问令牌。
其实也不麻烦,首先在进行这些操作前,你一定已经拥有了对应的appKey和appSecret,这个就不多说了,接下来就是需要用这两个参数、回调地址等生成获取授权的URL,方法如下:
#获取速卖通Code,获取的code有效时间2分钟,2分钟内需要执行getToken方法。
public function getCode(){
#拼接获取Code的URL
$url='http://gw.api.alibaba.com/openapi';
$appKey='';
$appSecret ='';
#回调URL
$redirectUrl = 'http://127.0.0.1/auth.php';
#生成签名
$code_arr = array(
'client_id' => $appKey,
'redirect_uri' => $redirectUrl,
'site' => 'aliexpress'
);
ksort($code_arr);
$sign_str = '';
foreach ($code_arr as $key=>$val){
$sign_str .= $key . $val;
}
$code_sign = strtoupper(bin2hex(hash_hmac("sha1", $sign_str, $appSecret, true)));
$get_code_url = 'http://gw.api.alibaba.com/auth/authorize.htm?client_id='.$appKey.'&site=aliexpress&redirect_uri='.$redirectUrl.'&_aop_signature='.$code_sign;
$get_code_url;
}
上面的方法将会生成授权页面的URL,可用curl抓取或者直接在浏览器里输入上面的地址,进入即可看到需要用户提供aliexpress账号和密码以授权。如下图:

完成此步后,页面就会跳转到上面程序中写的回调地址,http://127.0.0.1/auth.php,此页面的程序里只要打印出$_GET就可以显示返回的json数据,JSON数据里会带有code值。注意code有效期只有2分钟,也就是2分钟内就需要将此code通过接口换取TOKEN值。使用的方法如下:
public function gettoken(){
#根据code获取refresh_token、access_token
$url = 'http://gw.api.alibaba.com/openapi';
$appKey = '';
$appSecret ='';
$redirectUrl = 'http://http://127.0.0.1/auth.php';
#此处code即为上面的方法getCode取得的code值
$code='';
#拼接获取token的Url
$getTokenUrl='https://gw.api.alibaba.com/openapi/http/1/system.oauth2/getToken/'.$appKey;
$data='grant_type=authorization_code&need_refresh_token=true&client_id='.$appKey.'&client_secret='.$appSecret.'&redirect_uri='.$redirectUrl.'&code='.$code;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $getTokenUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
#打印出返回结果
print_r(json_decode($result));
exit;
}
把第一步返回的CODE放至第二步里,使用第二个方法即可获取Access_token和refresh_token值,access_token有效期10小时,refresh_token有效期半年。
目前有 0 条留言 其中:访客:0 条, 博主:0 条