昨天经理给我提了一个需求,把在公司web项目中提交的文章同步到公司微信公众号上。由于从来都没有接触过微信公众号的我开始了我的踩坑之旅。
因为没有公司公众号的管理权所有只能自己取申请了一个个人公众号,申请完个人公众号拿到AppID和AppSecret之后就开始踩坑了,赶紧拿小本本记下来(你们想看的问题大概率在第三点,);
- 设置白名单,首先设置获取access_token的ip白名单,我设置了自己电脑的ipv4地址,结果调用接口之后直接抛出错误,不过这个坑很好解决,看错误提示信息就知道要在白名单上添加ipv6地址了。
- 拿到access_token之后就要开始调用接口了,我开始寻找上传素材的接口,在官方文档找到material/add_news接口、media/uploadimg接口和add_material接口(好吧这一点不是坑)。
- 在个人笔记本(win10)上开始测试接口,开始疯狂报错errcode:40001 errmsg:invalid credential, access_token is invalid or not latest hint。试了无数次,找了n多百度我坚信这不是access_token无效的问题,尝试疯狂改请求参数也完全无用,微信公众平台接口调试工具也没有提供这个接口的测试。
- 最后在微信公众官方设置中发现这样一条:
好嘛我直接好家伙,原来接口调用需要在服务端,而且还是要已经注册过域名的服务器,不过还好我在腾讯云租有一台服务器,也注册了域名。配置好之后坐标继续测试接口。 - 因为服务器时centos系统,纯字符界面,而且只是搭建了博客而已,并没有一下其它得环境和软件,所以得用curl指令来测试了,地址跟参数什么的很长,就把指令完整的写在notepad++上再粘贴过来。这个过程中还遇到了一个media参数格式的小问题要在路径/文件名前面加上一个@否则会报41500的一个错误。
- 这是我最后测试成功的一个结果: