drkrsx3135168 2014-09-01 14:36
浏览 32
已采纳

使用google-api-php-client无法创建正确的signedurl

bucketIn my project, I am uploading user's files to cloud storage, so when user wants to download that file I want to generate signedurl from google cloud, to limit access to the files to that specific user only, So I have tried following php code to do that

`

function storageURL( $id, $method = 'GET', $duration = 10 ) { 
        $expires = time( ) + $duration*60; 
        $content_type = ($method == 'PUT') ? 'application/x-www-form-urlencoded' : ''; 
    $to_sign = ($method . "
" .
            /* Content-MD5 */ "
" . 
            $content_type . "
" . 
            $expires . "
" . s
            '/bucket/' . $id); 
    $signature = '';

    $signer = new Google_Signer_P12(file_get_contents(__DIR__.'/'."key.p12"), "notasecret");
    $signature = $signer->sign($to_sign);
    $signature = Google_Utils::urlSafeB64Encode($signature);

    return ('https://bucket.storage.googleapis.com/' . $id . 
            '?GoogleAccessId=' . 'MyServiceAccount@developer.gserviceaccount.com' . 
            '&Expires=' . $expires . '&Signature=' . $signature); 
}
echo storageURL("object_file.docx");
?>`

When I copy this url into browser's addressbar it shows me SignatureDoesNotMatch error, I get this XML as output

<Error>
    <Code>SignatureDoesNotMatch</Code>
    <Message>
        The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
    </Message>
    <StringToSign>
        GET 1409582445 /bucket/object_file.docx
    </StringToSign>
</Error>

I am not able to understand what is wrong with my code...

P.S. I am able to download the file when i paste this in browser addressbar "https://bucket.storage.googleapis.com/object_file.docx"

  • 写回答

2条回答 默认 最新

  • doushang2571 2014-09-12 12:22
    关注

    The file I was trying to access has spaces in its name due to some bugs with urlencoding I wasn't able to create proper url for it ...

    So for files without spaces works fine with me

    Reference -> Using google cloud storage and gsutil not able to generate valid signedurl

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)