当前位置:Gxlcms > PHP教程 > 关于触发异步处理{"error":"badtoken"}

关于触发异步处理{"error":"badtoken"}

时间:2021-07-01 10:21:17 帮助过:47人阅读

  1. <code>//代码是这样的,我要异步处理图片持久化
  2. </code>
  1. <code>function makeUrl($url,$bucket,$savekey,$ak="KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR",$sk="D-K57TE5hPe3krexftxLWFKmL2xbQEKA-mtkrUfB"){
  2. $find = array('+', '/');
  3. $replace = array('-', '_');
  4. $encode = str_replace($find,$replace,base64_encode("$bucket:$savekey"));
  5. $url = $url."|saveas/".$encode;
  6. $sha1 = hash_hmac('sha1',$url,$sk,true);
  7. $sign = $ak.":".(str_replace($find,$replace,base64_encode($sha1)));
  8. $data = $url."/sign/".$sign;
  9. return $data;
  10. }
  11. echo makeUrl("gitwiduu.u.qiniudn.com/weidu.png?imageView/2/w/200/h/200","gitwiduu","widuu.png");
  12. </code>
  1. <code>//</code>
输出url是

gitwiduu.u.qiniudn.com/weidu.png?imageView/2/w/200/h/200|saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=

  1. <code>//然后拼接params
  2. </code>
  1. <code>//bucket=gitwiduu&key=weidu.png&fops=imageView/2/w/200/h/200;saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=¬ifyURL=http://localhost/
  2. </code>
  1. <code>function url_safe_baseencode($str) // URLSafeBase64Encode
  2. {
  3. $find = array('+', '/');
  4. $replace = array('-', '_');
  5. return str_replace($find, $replace, base64_encode($str));
  6. }
  7. function sign1($data,$ak="KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR",$sk="D-K57TE5hPe3krexftxLWFKmL2xbQEKA-mtkrUfB"){
  8. $sign = hash_hmac('sha1', $data, $sk, true);
  9. return $ak.':'.url_safe_baseencode($sign);
  10. }
  11. </code>

//根据官方文档path?query\nbody 加密输出结果

  1. <code>echo sign1("/pfop\nbucket=gitwiduu&key=weidu.png&fops=imageView/2/w/200/h/200;saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=¬ifyURL=http://localhost/");
  2. </code>
  1. <code>//获取Authorization token
  2. //</code>
输出 token 是 KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:8nodNoJ7A8QE59UNrlMXSs-2ATY= 然后php curl 实验不行 然后在linux下实验
  1. <code>curl -d "bucket=gitwiduu&key=weidu.png&fops=imageView/2/w/200/h/200;saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=¬ifyURL=http://localhost/" -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: QBox KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:8nodNoJ7A8QE59UNrlMXSs-2ATY=" http://api.qiniu.com/pfop
  2. </code>
  1. <code>//或者到 http://api.qiniu.com/pfop/ 都是返回json出现{"error":"bad token"}" 请问一下哪里出的错误呀
  2. </code>

回复内容:

  1. <code>//代码是这样的,我要异步处理图片持久化
  2. </code>
  1. <code>function makeUrl($url,$bucket,$savekey,$ak="KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR",$sk="D-K57TE5hPe3krexftxLWFKmL2xbQEKA-mtkrUfB"){
  2. $find = array('+', '/');
  3. $replace = array('-', '_');
  4. $encode = str_replace($find,$replace,base64_encode("$bucket:$savekey"));
  5. $url = $url."|saveas/".$encode;
  6. $sha1 = hash_hmac('sha1',$url,$sk,true);
  7. $sign = $ak.":".(str_replace($find,$replace,base64_encode($sha1)));
  8. $data = $url."/sign/".$sign;
  9. return $data;
  10. }
  11. echo makeUrl("gitwiduu.u.qiniudn.com/weidu.png?imageView/2/w/200/h/200","gitwiduu","widuu.png");
  12. </code>
  1. <code>//</code>
输出url是

gitwiduu.u.qiniudn.com/weidu.png?imageView/2/w/200/h/200|saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=

  1. <code>//然后拼接params
  2. </code>
  1. <code>//bucket=gitwiduu&key=weidu.png&fops=imageView/2/w/200/h/200;saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=¬ifyURL=http://localhost/
  2. </code>
  1. <code>function url_safe_baseencode($str) // URLSafeBase64Encode
  2. {
  3. $find = array('+', '/');
  4. $replace = array('-', '_');
  5. return str_replace($find, $replace, base64_encode($str));
  6. }
  7. function sign1($data,$ak="KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR",$sk="D-K57TE5hPe3krexftxLWFKmL2xbQEKA-mtkrUfB"){
  8. $sign = hash_hmac('sha1', $data, $sk, true);
  9. return $ak.':'.url_safe_baseencode($sign);
  10. }
  11. </code>

//根据官方文档path?query\nbody 加密输出结果

  1. <code>echo sign1("/pfop\nbucket=gitwiduu&key=weidu.png&fops=imageView/2/w/200/h/200;saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=¬ifyURL=http://localhost/");
  2. </code>
  1. <code>//获取Authorization token
  2. //</code>
输出 token 是 KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:8nodNoJ7A8QE59UNrlMXSs-2ATY= 然后php curl 实验不行 然后在linux下实验
  1. <code>curl -d "bucket=gitwiduu&key=weidu.png&fops=imageView/2/w/200/h/200;saveas/Z2l0d2lkdXU6d2lkdXUucG5n/sign/KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:oLnyNAFkj7gs6a0LyLJ581bCS_Q=¬ifyURL=http://localhost/" -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: QBox KUN6xYZlOAtid2MjHm90-6VFY2M7HC90ijDH4uOR:8nodNoJ7A8QE59UNrlMXSs-2ATY=" http://api.qiniu.com/pfop
  2. </code>
  1. <code>//或者到 http://api.qiniu.com/pfop/ 都是返回json出现{"error":"bad token"}" 请问一下哪里出的错误呀
  2. </code>

1、手动触发的persistentOps持久化可以参考: http://segmentfault.com/q/1010000000331820
2、实际你的需求不需要用到持久化,saveas就可以了。看了一下,得到的saveas的url是正确的

人气教程排行