#2
easyppt2024-10-26 17:11
|
网站终于可以登录了,迫不及待分享我的编程经验。。。
原创 Old Foxer 动感少女旗舰店 2024年09月27日 17:19 浙江
微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开放接口则是提供服务的基础。微信公众号的所有功能都可以通过微信提供的api接口实现,我们现在就一起来学习吧。
任何人都可以通过任何编程语言去访问微信公众号的api接口,这里我用的是简单的foxpro语言9.0版,win7系统下编译通过。
首先,我们要申请一个微信公众号,得有个公司主体,有营业执照,申请通过后,微信公众号平台会给你一个AppID和AppSecret,这是2个长字符串,要保存好,别忘记了~~~
调用流程:开发者通过AppID和AppSecret向微信平台申请一个access_token,这也是一个长字符串,这个access_token有时效7200秒(2个小时),每次访问微信平台都要提交这个access_token,到期了就要重新申请,这是一个安全机制。
获得access_token的API接口地址和调用格式如下:
开发文档里是这样写的,https请求方式: 方法GET https://api.weixin.
参数说明
参数 是否必须 说明
grant_type 是 获取access_token填写client_credential
appid 是 第三方用户唯一凭证
secret 是 第三方用户唯一凭证密钥,即appsecret
如果成功则返回一个json格式的数据包
{"access_token":"ACCESS_TOKEN","expires_in":7200}
参数 说明
access_token 获取到的凭证
expires_in 凭证有效时间,单位:秒
如果不成功,则会返回一个包含错误代码的json格式数据包
{"errcode":40013,"errmsg":"invalid appid"}
有了这个调用接口的说明,我们就可以开始我们的微信公众号编程之旅了~
考虑到accesstoken的7200秒的时效性,以及定时刷新的特点,我们可以自定义一个accesstocken类,派生于计时器,定义一个apply方法用于向微信平台申请访问授权,或者说是访问令牌。申请成功则保存返回的accesstoken,失败则返回错误信息。一旦申请成功,激活timer的timer事件,每隔7200自动申请一次,并将accesstoken保存。
apply方法的代码如下:
IF EMPTY(this.appid) or EMPTY(this.secret)
MESSAGEBOX("您需要APPID和SECRET才能访问微信公众号!")
this.Interval=0
RETURN .f.
ELSE
this.applyurl="https://api.weixin.
cpara="grant_type="+this.grant_type+"&appid="+this.appid+"&secret="+this.secret
ENDIF
oxmlhttp=CREATEOBJECT("microsoft.xmlhttp")
oxmlhttp.open([POST],this.applyurl)
oxmlhttp.send(cpara)
SET CLASSLIB TO myclass addi
ojson=CREATEOBJECT("myjson")
IF oxmlhttp.readystate=4 AND oxmlhttp.status=200
cjsonscript=oxmlhttp.responsetext
ojson.read(cjsonscript)
this.access_token=ojson.get("access_token")
this.expires_in=VAL(ojson.get("expires_in"))
this.Interval=this.expires_in*1000
this.errorcode=0
RETURN .t.
ELSE
this.errorcode=VAL(ojson.get("errorcode"))
this.errmsg=ojson.get("errmsg")
this.access_token=""
this.Interval=0
RETURN .f.
ENDIF
当初在调试这段代码的时候,碰到2个问题,尝试很久才解决,估计这是新手都会碰到的问题,在这里我也分享给大家。第一个问题是,ip地址白名单问题,原来是微信为了安全,搞了个白名单机制,只有在白名单里的IP地址才可以访问它的API接口,这倒是个比较安全的设置,也就是就算有黑客拿到你的appid和appsecret也没有用。第二个问题是,当我们按帮助文档的方法用get方法去访问接口时,一直返回白名单错误,明明已经设置了白名单,就是拒绝访问。没办法,我只好改用post方法,成功了,至于原因,我也没查到,有人知道,烦请告知我一下~
对此感兴趣的朋友可以留言或私信我,索取完整源代码,记得关注和转发哦~~~
原文链接:https://mp.weixin.