这里做个广告,为了更快了解微信本来新建了一个QQ群,群名称是【微信开发技术交流:389075177】,专门用于微信开发和交流,欢迎正在研究微信的童鞋一起加入,一起学习,一起进步!
本人在调试过程中暂时想到同一个页面读取access_token,并把access_token保存到相应数据库中,当然我下边的方法数据库中是肯定存在我才那样写的,没有做太多的判断,只是调试接口时用的,真的程序肯定不能这样写,太不正规了。
方法很简单,先创建张表,格式如下,表名:access
由于asp没有json数据的处理,所有只好借用js处理了,不过效果很不错哦。
通过lasttime记录失效时间,获取时先查询一下是否失效,没有失效直接返回,失效了就重新获取一下。
<%@Language="VBScript" CodePage="65001"%> <% Dim conn conn="Provider=SQLOLEDB.1;Password=****;Persist Security Info=True;User ID=sa;Initial Catalog=weixin;Data Source=(local)" Dim json,APPID,APPSECRET,rs,sql,url APPID=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,3 if rs("s")>60 then response.Write(rs("access_token")) else url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="&APPID&"&secret="&APPSECRET On Error Resume Next json=gethtml(url) Set json=toObject(json) access_token="" access_token = json.access_token expires_in="0" expires_in= json.expires_in errcode="" errcode=json.errcode errmsg="" errmsg=json.errmsg IsWork="0" AccessName=now() if errcode<>"" then response.Write("不合法的APPID") IsWork="0" end if if access_token<>"111" then response.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 if rs.close set rs=nothing Response.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.Close set xh=nothing end 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>