本文作者:DurkBlue

阿里云获取token的php 代码

DurkBlue 2022-07-01 1566
阿里云获取token的php 代码摘要: 开头先说明!不要说去下载官方的SDK!!!不要说去下载官方的SDK!!!不要说去下载官方的SDK!!!百度里面一搜,搜出来的文章全都是:先下载官方SDK,然后叭啦叭啦一大堆!都下载...

开头先说明!

不要说去下载官方的SDK!!!不要说去下载官方的SDK!!!不要说去下载官方的SDK!!!

百度里面一搜,搜出来的文章全都是:先下载官方SDK,然后叭啦叭啦一大堆!都下载官方SDK了,还要你废话干什么?官方文档又不是读不懂!

好,说完了,为何这么气愤?因为昨天这个玩意花了我一天时间。说说为什么不用官方文档?

因为我这个项目,一共就一个页面,才1kb大小,但官方的sdk呢?2.0版要用composer来安装,1.0版如下图:

阿里云获取token的php 代码  第1张


玩呢?我就想鉴权获取个token,官方的sdk集成性太高了,一个文件调一个文件,又不能单独拿获取token这个功能出来,没办法,只能自己写了!

关键是,官方上对于自己取token的文档,是有问题的!有一个环节,它没说!!!!

先上完整代码!

/*
 * author:kai
 * $return token
 * 功能:获取阿里云token
 */
public function getalyuntoken($accesskeyid,$accessKeysecret){
    date_default_timezone_set("Etc/GMT");
    $one = md5(time());
    $parms = array(
        "AccessKeyId" => $accesskeyid,
        "Action" => "CreateToken",
        "Version" => "2019-02-28",
        "Format" => "JSON",
        "RegionId" => "cn-shanghai",
        "Timestamp" => date("Y-m-d\TH:i:s\Z"),
        "SignatureMethod" => "HMAC-SHA1",
        "SignatureVersion" => "1.0",
        "SignatureNonce" => substr($one,0,8)."-".substr($one,8,4)."-".substr($one,12,4)."-".substr($one,16,4)."-".substr($one,20,4),
    );
    ksort($parms);
    $query = http_build_query($parms);
    $stringToSign = "GET&%2F&" . urlencode($query);
    $signature = urlencode(base64_encode(hash_hmac("sha1",$stringToSign,$accessKeysecret."&",true)));
    $queryStringWithSign = "Signature=". $signature ."&". $query;
    $tokenUrl = "http://nls-meta.cn-shanghai.aliyuncs.com/?".$queryStringWithSign;
    $token_string = $this->urlOpen($tokenUrl);
    $token_object = json_decode($token_string,true);
    $token = $token_object['Token']['Id'];
    return $token;
}
/*
 * author:kai
 */
public function urlOpen($url,$data = null,$header =null){
    $ch =curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    //curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
    //curl_setopt($ch,CURLOPT_USERAGENT,$url,$ua);
    if($data){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
    }
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_REFERER,$url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
    $content = curl_exec($ch);
    $error = curl_error($ch);
    if($error){
        die($error);
    }
    curl_close($ch);
    return $content;
}


此篇文章由DurkBlue博客申请发布,转载吧请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2022-07-01
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享