记住用户名密码
对于未接触过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 条