i***@qq.com
i***@qq.com
  • 发布:2023-05-08 15:08
  • 更新:2024-02-18 14:35
  • 阅读:313

再次提出疑问,【实名认证官方文档里面存在问题(签名认证的部分)】,实名认证connectCode认证有效,签名认证死活都是51000:Access denied

分类:uni-app

亲测 实名认证connectCode认证有效,但是前面一直提出问题的签名认证方式无效,强烈怀疑官方文档里面存在问题

签名认证时出现的问题如下:
https://ask.dcloud.net.cn/publish/169147
使用的官方提供的实名认证页面示例
url: 'YOUR_BACKEND_API/getCertifyId',
改成了url: 'https://云函数url化域名/uni-frv-external-co/getCertifyId',
并加入了头部请求
但是提交姓名身份证后,显示加载中的提示框后,弹出一个空白的只有确定按钮的提示框
然后打印该success: ({data}) => {中的data

console.log(data)
出来的结果如下:

{
"success": false,
"error": {
"code": "FunctionBizError",
"message": "51000:Access denied"
}
}

请问这是什么问题

2023-05-08 15:08 负责人:DCloud_uniCloud_CRL 分享
已邀请:
i***@qq.com

i***@qq.com (作者)

官方请确认一下文档是否是存在问题的

DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

用什么语言签名的?贴下完整的签名代码。同时贴下请求头信息

d***@gmail.com

d***@gmail.com

请问作者解决了吗?我也遇到同样问题,PHP 语言。官方给的校验签名验证没有问题,getAuthResult 也是能成功,就是前一步 getCertifyId 一直是这个错误

附签名相关代码

    public function getSign($params, $timestamp = '', $signKey = '') {  
        $timestamp = $timestamp ?: $this->getMilltime();  
        $signKey = $signKey ?: $this->signKey;  
        ksort($params);  
        foreach ($params as $k => $v) {  
            if (is_array($v) || is_object($v)) {  
                unset($params[$k]);  
            }  
        }  
        $payloadStr = http_build_query($params);  
        $sign = hash_hmac('sha256', ((string)$timestamp . "\n" . $payloadStr), $signKey);  
        // $sign = hash('sha256', ((string)$timestamp ."\n". $payloadStr . "\n". $this->signKey));  
        Log::error("签名信息: timestamp: {$timestamp} sign: {$sign} payload: {$payloadStr}");  
        return $sign;  
    }

要回复问题请先登录注册