账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    七牛云回调验证失败
    33
    0

    按照官方的sdk走了一遍,测试七牛云,结果回调验证总是失败,真TM无语。

    得到token:

    /**
         * 得到上传token的方法
         */
        public function fetchUploadToken()
        {
            // 初始化Auth状态
            $auth = new Auth($this->accessKey, $this->secretKey);
            $policy = [
                'callbackUrl' => 'http://我的回调域名/acceptQiniuUploadCallback',
                'callbackBody' => '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)"}',
                'callbackBodyType' => 'application/json'
            ];
            $upToken = $auth->uploadToken($this->bucket, null, $this->expires, $policy, true);
    
            echo $upToken;
        }

    上传的:

    public function uploadFileToQiniu()
    {
        $uploadToken = $_POST['uploadToken'];
        $uploadMgr = new UploadManager();
        list($ret, $err) = $uploadMgr->put($uploadToken, null, 'test qiniu upload');
    
        if ($err !== null) {
            var_dump($err);
        } else {
            var_dump($ret);
        }
    }

    PS: 上传是返回的success,也就是上传是没问题的。

    回调方法:

    public function acceptQiniuUploadCallback()
        {
            $auth = new Auth($this->accessKey, $this->secretKey);
            //获取回调的body信息
            $callbackBody = file_get_contents('php://input');
            //回调的contentType
            $contentType = 'application/x-www-form-urlencoded';
            //回调的签名信息,可以验证该回调是否来自七牛
            $authorization = $_SERVER['HTTP_AUTHORIZATION'];
            //七牛回调的url,具体可以参考:http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
            $url = 'http://我的回调域名/acceptQiniuUploadCallback';
            $isQiniuCallback = $auth->verifyCallback($contentType, $authorization, $url, $callbackBody);
    
            if ($isQiniuCallback) {
                $resp = array('ret' => 'success');
    
            } else {
                $resp = array('ret' => 'failed');
            }
    
            echo json_encode($resp);
        }

    收到的七牛云带过来的参数是:

    callbackBody:{\"key\":\"Fm2SqeglnKIi8UDYJ7_WhhR8fybG\",\"hash\":\"Fm2SqeglnKIi8UDYJ7_WhhR8fybG\",\"fsize\":17,\"bucket\":\"test\"}",
    头信息中的authhorization:
    QBox KhMpusItBI66r4HjARLLeLrACyq0CFWVhltvxZRQ:PGtDDftzjgB4MFW5A5LF_5pXgpc=

    验证就是过不了,也就是这一行:

    $isQiniuCallback = $auth->verifyCallback($contentType, $authorization, $url, $callbackBody);

    总TM返回false, 不知道其它人遇到过没,真是屎一样的文档,测试都不能直接通过。也没个错误提示。有没有遇到过类似情况的兄dei,帮忙看看,谢谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部