您的位置:首页 > 编程语言 > ASP

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

2014-03-29 23:04 676 查看
根据微信开放平台介绍 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.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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: