在使用日志服务sls,调用getlogs接口的时候,签名参数是如何定义的才能生成一个正确的签名?[阿里云SLS]

在使用getlogs的api的时候,会一直返回一个签名不正确。 在我使用这个接口的时候总是会返回`401 Authorization Required

代码如下:

#签名 $parms[‘from’] = $from; $parms[‘to’] = $to; $parms[‘query’] = $query; $parms[‘type’] = ‘log’; $parms[‘powerSql’] = false; $this->sign(‘GET’,’/logstores’ . ‘/’ . $logstore,$accessKeyId,$accessKey,$parms,array( “x-log-signaturemethod” => “hmac-sha1”, “x-log-bodyrawsize” => “0”, “x-log-apiversion” => “0.6.0” ),

#签名方法 function sign($method, $uri, $accessKeyId, $accessKeySecret, $params, $headers) { $contentLength = 0; $headers[“x-log-apiversion”] = “0.6.0”; $headers[“x-log-signaturemethod”] = “hmac-sha1”; // date setLocale(LC_TIME, ‘en_US’); $date = gmdate(‘D, d M Y H:i:s \G\M\T’, time()); $headers[“Date”] = $date; $headers[“Content-Length”] = (string)$contentLength; $contentType = isset($headers[‘Content-Type’]) ? $headers[‘Content-Type’] : ”; $message = $method . ”
” . $contentType . ”
” . $date . ”
“; // header $filterHeaders = []; foreach ($headers as $key => $val) { if (str_starts_with($key, ‘x-log-‘) || str_starts_with($key, ‘x-acs-‘)) { $filterHeaders[$key] = $val; } } ksort($filterHeaders); foreach ($filterHeaders as $key => $val) { $message .= $key . ‘:’ . $val . ”
“; } // uri and params $message .= $uri; if (sizeof($params) > 0) { $message .= ‘?’; }

    ksort($params);
    $sep = '';
    foreach ($params as $key => $val) {
        $message .= $sep . $key . '=' . $val;
        $sep = '&';
    }
    // signature & authorization
    $signature = base64_encode(hash_hmac('sha1', $message, $accessKeySecret, TRUE));
    $auth = 'LOG ' . $accessKeyId . ':' . $signature;
    $headers['Authorization'] = $auth;
    return $headers;
}

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====