想用七牛實現個離線下載的功能。然後把裡面的一些密碼編譯演算法的函數提了出來。
這個是shell指令碼啟動並執行,提示bad token了,不知道我下面的指令碼哪裡寫錯了?
謝謝~
php download.php https://p.ssl.qhimg.com/t01d1f1a2ae31e3c3e4.png 111.png
download.php,擷取encodeURI、encodedEntryURI和accessToken;
?\n"$signingStr = "{$path}?{$query}\n";$sign = hmac_sha1($signingStr, SecretKey);$encodedSign = urlsafe_base64_encode($sign);//$encodeAccessKey = urlsafe_base64_encode(AccessKey);//$accessToken = "{$encodeAccessKey}:{$encodedSign}";$accessToken = AccessKey.":{$encodedSign}";echo "AccessToken:\r\n{$accessToken}\r\n\r\n";
$data['scope'] = BUCKET;$data['deadline'] = time()+3600;//到期時間$encoded = urlsafe_base64_encode(json_encode($data));//$signature=hash_hmac('sha1',$encoded,'KEY',true);$signature = hmac_sha1($encoded, SecretKey);$encode_signed = urlsafe_base64_encode($signature);//$UploadToken=$encode_signed.':'.$encoded; $UploadToken = AccessKey.":".$encode_signed.":".$encoded;echo "AccessToken:\r\n{$UploadToken}\r\n\r\n";echo "UploadURL:\r\nhttp://iovip.qbox.me/fetch/{$encodeURI}/to/{$encodedEntryURI}\r\n\r\n";
再通過指令碼
sh download.sh encodeURI encodedEntryURI accessToken
傳輸資料,結果。。。提示:
{"error":"bad token"}
download.sh
curl -i \ -o - \ -H 'Content-Type: application/x-www-form-urlencoded' \ -H "Authorization: QBox $3" \ -X POST \ "http://iovip.qbox.me/fetch/$1/to/$2"
已經自行處理完成,最終 PHP 部分(有兩處錯誤):
PS:我發現我提問到最後,基本都是靠自己搞定的啊。不知道是不是大牛不屑這些技術含量低的問題還是???
真的和 sg 沒法比啊。。。
";var_dump($signingStr);$sign = hmac_sha1($signingStr, SecretKey);$encodedSign = urlsafe_base64_encode($sign);var_dump($sign);$accessToken = AccessKey.":{$encodedSign}";echo "AccessToken:\r\n{$accessToken}\r\n\r\n";echo "UploadURL:\r\nhttp://iovip.qbox.me/fetch/{$encodeURI}/to/{$encodedEntryURI}\r\n\r\n";
回複內容:
想用七牛實現個離線下載的功能。然後把裡面的一些密碼編譯演算法的函數提了出來。
這個是shell指令碼啟動並執行,提示bad token了,不知道我下面的指令碼哪裡寫錯了?
謝謝~
php download.php https://p.ssl.qhimg.com/t01d1f1a2ae31e3c3e4.png 111.png
download.php,擷取encodeURI、encodedEntryURI和accessToken;
?\n"$signingStr = "{$path}?{$query}\n";$sign = hmac_sha1($signingStr, SecretKey);$encodedSign = urlsafe_base64_encode($sign);//$encodeAccessKey = urlsafe_base64_encode(AccessKey);//$accessToken = "{$encodeAccessKey}:{$encodedSign}";$accessToken = AccessKey.":{$encodedSign}";echo "AccessToken:\r\n{$accessToken}\r\n\r\n";
$data['scope'] = BUCKET;$data['deadline'] = time()+3600;//到期時間$encoded = urlsafe_base64_encode(json_encode($data));//$signature=hash_hmac('sha1',$encoded,'KEY',true);$signature = hmac_sha1($encoded, SecretKey);$encode_signed = urlsafe_base64_encode($signature);//$UploadToken=$encode_signed.':'.$encoded; $UploadToken = AccessKey.":".$encode_signed.":".$encoded;echo "AccessToken:\r\n{$UploadToken}\r\n\r\n";echo "UploadURL:\r\nhttp://iovip.qbox.me/fetch/{$encodeURI}/to/{$encodedEntryURI}\r\n\r\n";
再通過指令碼
sh download.sh encodeURI encodedEntryURI accessToken
傳輸資料,結果。。。提示:
{"error":"bad token"}
download.sh
curl -i \ -o - \ -H 'Content-Type: application/x-www-form-urlencoded' \ -H "Authorization: QBox $3" \ -X POST \ "http://iovip.qbox.me/fetch/$1/to/$2"
已經自行處理完成,最終 PHP 部分(有兩處錯誤):
PS:我發現我提問到最後,基本都是靠自己搞定的啊。不知道是不是大牛不屑這些技術含量低的問題還是???
真的和 sg 沒法比啊。。。
";var_dump($signingStr);$sign = hmac_sha1($signingStr, SecretKey);$encodedSign = urlsafe_base64_encode($sign);var_dump($sign);$accessToken = AccessKey.":{$encodedSign}";echo "AccessToken:\r\n{$accessToken}\r\n\r\n";echo "UploadURL:\r\nhttp://iovip.qbox.me/fetch/{$encodeURI}/to/{$encodedEntryURI}\r\n\r\n";
以前寫的個:AK
,KEY
和scope
替換成你的
$data['scope']='your bucket';$data['deadline']=time()+3600;//到期時間$encoded=urlsafe_base64_encode(json_encode($data));$signature=hash_hmac('sha1',$encoded,'KEY',true);$encode_signed = urlsafe_base64_encode($signature);$UploadToken='AK:'.$encode_signed.':'.$encoded; echo $UploadToken;function urlsafe_base64_encode($data) { $data = base64_encode($data); $data = str_replace(array('+','/'),array('-','_'),$data); return $data;}
話說為啥不用SDK的?
直接
$token = $auth->uploadToken($bucket);