我这里的例子按照cookies的方式。
webconfig.asp
这个文件是加载到所有页面的,可以理解为全局变量,主要定义了用户的wxid(openid),api地址等信息。
其他的,像payurl,mainwxid等变量在此例中没有用到,不必关心。
如果只是简单的判断的话,只要判断wxid是否为空就好。
如果复杂一点的话,可以将wxid信息发送到API接口,判断是否存在该用户。
检查用户不是本文重点,只判断wxid是否为空。
if wxid = "" then
Response.Redirect("getcode.asp")
end if
%>
getcode.asp页面代码量很少,主要是用来换取code的。
dim appid,url,REDIRECT_URI
'appid是你平台的appid
appid = You Appid.
'REDIRECT_URI是回调的页面
REDIRECT_URI= weburl & "/getinfo.asp"
'url是获取code的页面
url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" & appid & "&redirect_uri=" & Server.URLEncode(REDIRECT_URI) & "&response_type=code&scope=snsapi_userinfo&state=" & state & "#wechat_redirect"
Response.Redirect(url)
%>
当用户来到getinfo.asp页面后,正常情况下,会get到一个code值。
直接用Request.QueryString得到。
然后我们将这个code值post到API接口来获得用户的信息。
从这里开始,所有都是重点!重点!重点!
在getinfo.asp中加载asp2json.asp文件,是用来处理json数据的类。因为咱们post出去和接收回来的数据都是json数据。
dim code,putjson,getjson,backdata
code = Request.QueryString("code")
set putjson = new aspjson
'这里判断code是否为空
if code = "" then
'除了停止程序,你也可以增加一些提示后再停止。
response.end
end if
set postjson = new aspjson
with postjson.data
.add "apitype", "userinfo"
.add "apiinfo", "userlogin"
.add "code",code
end with
'这里我要多说几句,既然api接口是咱自己写的,尽量把接口分类后再细化,那样便于管理和扩展。而且你的api编制也不至于杂乱无章。你想想,如果你在一个文件里,想到哪写到哪,回头再找。。。。。估计会头疼的。
backdata = posthttp(apiurl,postjson.jsonoutpu())
if len(backdata)
'没接收到数据,程序停止。
response.end
end if
getjson = new aspjson
getjson = loadjson(backdata)
response.cookies("wxid") = getjson.data("wxid")
response.cookies("nickname") = getjson.data("nickname")
response.cookies("headimgurl") = getjson.data("headimgurl")
。。。。。。。。。。。。。。。
'想写cookies的其他数据,比方说省市,性别等信息。
set getjson = nothing
set postjson = nothing
%>
至此,获得用户信息的页面写完了。
下面开始写api的内容。
dim getdata,getjson,postjson
getdata = request.form
if len(getdata)
response.end
end if
set getjson = new aspjson
getjson.loadjson(getdata)
'这里用select是为了写其他接口
select case getjson.data("apitype")
case "userinfo"
call userinfo()
end select
sub userinfo()
select case getjson.data("apiinfo")
case "userlogin"
call userlogin()
end select
end sub
sub userlogin()
dim code,userinfo,infojson
code = getjson.data("code")
userinfo = GetWXUserInfo(code,"info")'这个方法之前的文章提供过
if userinfo "error" then
set infojson = new aspjson
infojson.loadjson(userinfo)
with putjson.data
.add "wxid", infojson("openid")
.add "nickname", infojson("nickname")
.add "headimgurl", infojson("headimgurl")
.................................. '其他数据
end with
response.write putjson.jsonoutput()
end if
end sub
%>
好了,到这里程序完成。
手写程序,没有测试,难免会有什么错误。