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

根据微信开放平台介绍  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 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.οnerrοr=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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值