linux里通过curl命令获取access_token报"errcode":41002

1、问题描述

通过curl命令,在linux服务器里直接获取access_token,请求获取access_token的方法为GET方法,需要传递appid/secret等参数,用以下的curl命令时:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx123123123ae8c140f&secret=werwer45345e76f2d7b,

返回{"errcode":41002,"errmsg":"appid missing hint: [YDkQGa05431501]"}错误,找不到appid。

2、问题原因

    由于请求的url中有&,其他参数获取不到,在linux系统中& 会使进程系统后台运行,必须对&进行下转义才能获取到所有参数。

3、解决办法

 (1)、对所有&进行转义,前面加上转义符\,如下示例:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential\&appid=wx123123123ae8c140f\&secret=werwer45345e76f2d7b

 (2)、将整个请求的url用单引号括起来:

'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential\&appid=wx123123123ae8c140f\&secret=werwer45345e76f2d7b'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是在使用 PHP 的 CURL 发送 POST 请求生成微信小程序码时,出现了“data format error”的错误提示。经过你的调试发现,问题出在 CURLOPT_POSTFIELDS 参数上。 首先,确保你的 $access_token 是有效的,并且请求的地址是正确的。其次,根据微信官方文档,getwxacodeunlimit 接口需要传递的参数中,scene 不能为空,page 可以为空,width 默认为 430,也可以自定义。 在你的代码中,$fields 变量中的参数看起来没有问题,但是由于没有设置 CURLOPT_HTTPHEADER 参数,导致 CURL 默认将 POST 数据以 application/x-www-form-urlencoded 格式发送。而微信官方要求,getwxacodeunlimit 接口需要的 POST 数据是以 raw 格式发送的,也就是需要设置请求头: ```php curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); ``` 这样修改后的代码如下: ```php $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$access_token); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); $fields = [ 'scene' => $data['scene'], 'page' => $data['page'], 'width' => 500 ]; curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields)); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); $res = curl_exec($curl); curl_close($curl); var_dump(json_encode($res)); ``` 希望这能够解决你的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值