public function UploadToken($sk, $ak, $param)
{
$param['deadline'] = 0 == $param['Expires'] ? 3600 : $param['Expires'];
$param['deadline'] += time();
$data = ['scope' => $this->bucket, 'deadline' => $param['deadline']];
if (!empty($param['CallbackUrl'])) {
$data['callbackUrl'] = $param['CallbackUrl'];
}
if (!empty($param['CallbackBody'])) {
$data['callbackBody'] = $param['CallbackBody'];
}
if (!empty($param['ReturnUrl'])) {
$data['returnUrl'] = $param['ReturnUrl'];
}
if (!empty($param['ReturnBody'])) {
$data['returnBody'] = $param['ReturnBody'];
}
if (!empty($param['AsyncOps'])) {
$data['asyncOps'] = $param['AsyncOps'];
}
if (!empty($param['EndUser'])) {
$data['endUser'] = $param['EndUser'];
}
$data = json_encode($data);
return self::SignWithData($sk, $ak, $data);
}