速卖通API的PHP调用程序-API授权及TOKEN获取

全屏阅读
  • 基本信息

对于未接触过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账号和密码以授权。如下图:

72ec73704e9ddbbc855d968725331fd4_20150403191741_35164.png

完成此步后,页面就会跳转到上面程序中写的回调地址,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)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!