參考文檔:https://cloud.tencent.com/document/product/598/13896
參考github項目:https://github.com/tencentyun/qcloud-cos-sts-sdk/tree/master/php
下面是參考以上文檔寫的方法
/**
* 獲取騰訊雲存儲聯合身份臨時訪問憑證
* 用戶app端使用騰訊雲存儲進行文件上傳前進行身份驗證,驗證通過纔可上傳文件
* 參考文檔:https://cloud.tencent.com/document/product/598/13896
* 參考github項目:https://github.com/tencentyun/qcloud-cos-sts-sdk/tree/master/php
* @return int code 操作碼,0表示成功
* @return string msg 提示信息
* @return array info 返回信息
* @return string info[0].sessionToken 返回驗證token
* @return string info[0].tmpSecretId 返回臨時secretid
* @return string info[0].tmpSecretKey 返回臨時secretkey
* @return string info[0].requestId 返回requestId
* @return string info[0].expiredTime 返回expiredTime 有效日期截止時間
*/
public function getTxCosFederationToken(){
$rs=array('code'=>0,"msg"=>"","info"=>array());
require_once(API_ROOT.'/../sdk/tencentSts/sts/sts.php'); //根據自己的文件引入路徑自行修改
$sts = new STS();
$config = array(
'url' => 'https://sts.tencentcloudapi.com/',
'domain' => 'sts.tencentcloudapi.com',
'proxy' => '',
'secretId' => '', // 騰訊雲存儲secretid密鑰
'secretKey' => '', // 騰訊雲存儲secretkey
'bucket' => '', // bucket-appid,如:ceshi-1255549201
'region' => '', // 換成 bucket 所在地區 如ap-shanghai
'durationSeconds' => 1800, // 密鑰有效期
'allowPrefix' => '*', // 這裏改成允許的路徑前綴,可以根據自己網站的用戶登錄狀態判斷允許上傳的具體路徑,例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全風險, 請謹慎評估使用)
// 密鑰的權限列表。簡單上傳和分片需要以下的權限,其他權限列表請看 https://cloud.tencent.com/document/product/436/31923
'allowActions' => array (
// 簡單上傳
'name/cos:PutObject',
'name/cos:PostObject',
// 分片上傳
'name/cos:InitiateMultipartUpload',
'name/cos:ListMultipartUploads',
'name/cos:ListParts',
'name/cos:UploadPart',
'name/cos:CompleteMultipartUpload'
)
);
// 獲取臨時密鑰,計算簽名
$tempKeys = $sts->getTempKeys($config);
$info['sessionToken']=$tempKeys['credentials']['sessionToken'];
$info['tmpSecretId']=$tempKeys['credentials']['tmpSecretId'];
$info['tmpSecretKey']=$tempKeys['credentials']['tmpSecretKey'];
$info['requestId']=$tempKeys['requestId'];
$info['expiredTime']=(string)$tempKeys['expiredTime'];
$rs['info'][0]=$info;
return $rs;
}
最後返回的內容結構如下: