微信asp+sqlser开发实例——获取access_token

来源:互联网 发布:食品流通许可证 知乎 编辑:程序博客网 时间:2024/05/29 17:57
根据微信开放平台介绍 http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96access_token access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。由于获取access_token的api调用次数非常有限,建议开发者全局存储与更新access_token,频繁刷新access_token会导致api调用受限,影响自身业务。

这里做个广告,为了更快了解微信本来新建了一个QQ群,群名称是【微信开发技术交流:389075177】,专门用于微信开发和交流,欢迎正在研究微信的童鞋一起加入,一起学习,一起进步!


本人在调试过程中暂时想到同一个页面读取access_token,并把access_token保存到相应数据库中,当然我下边的方法数据库中是肯定存在我才那样写的,没有做太多的判断,只是调试接口时用的,真的程序肯定不能这样写,太不正规了。


方法很简单,先创建张表,格式如下,表名:access

由于asp没有json数据的处理,所有只好借用js处理了,不过效果很不错哦。

通过lasttime记录失效时间,获取时先查询一下是否失效,没有失效直接返回,失效了就重新获取一下。 

<%@Language="VBScript" CodePage="65001"%><%Dim connconn="Provider=SQLOLEDB.1;Password=****;Persist Security Info=True;User ID=sa;Initial Catalog=weixin;Data Source=(local)"Dim json,APPID,APPSECRET,rs,sql,urlAPPID=request("APPID")APPSECRET=request("APPSECRET")set rs=server.CreateObject("adodb.recordset")sql="select top 1 access_token,datediff(s,getdate(),lasttime) s from access where APPID='"&APPID&"' and APPSECRET='"&APPSECRET&"' order by id desc"rs.open sql,conn,1,3if rs("s")>60 then response.Write(rs("access_token"))elseurl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="&APPID&"&secret="&APPSECRETOn Error Resume Next json=gethtml(url)Set json=toObject(json)access_token=""access_token = json.access_tokenexpires_in="0"expires_in= json.expires_inerrcode=""errcode=json.errcodeerrmsg=""errmsg=json.errmsgIsWork="0"AccessName=now()if errcode<>"" thenresponse.Write("不合法的APPID")IsWork="0"end if if access_token<>"111" thenresponse.Write(access_token)IsWork="1"end if '保存数据库中sql="INSERT  Access (AccessName,AppID,AppSecret,access_token,expires_in,lasttime,errcode,errmsg,IsWork) VALUES ('"&AccessName&"','"&AppID&"','"&AppSecret&"','"&access_token&"','"&expires_in&"',dateadd(s,"&expires_in&",getdate()),'"&errcode&"','"&errmsg&"','"&IsWork&"')"'response.Write(sql)conn.execute(sql)'response.Write(access_token)'response.Write("<br/>")'response.Write(expires_in)'response.Write("<br/>")'response.Write(errcode)'response.Write("<br/>")'response.Write(errmsg)'response.Write("<br/>")end ifrs.closeset rs=nothingResponse.End()
'获取网页源代码function getHtml(url)    Set xh = CreateObject("Microsoft.XMLHTTP")    xh.Open "GET",url,0    xh.Send()    Set MyStream=CreateObject("Adodb.Stream")     MyStream.Type = 2    MyStream.Open     MyStream.WriteText xh.responseText    MyStream.Position = 0    getHtml=MyStream.ReadText    MyStream.Closeset xh=nothingend function%><script>window.onerror=function(){return true;};</script><script language="JScript" runat="Server">function toObject(json) {try {     eval("var o="+json); //精妙   return o;} catch(err) {return err;}}</script>


0 0
原创粉丝点击