ASP开发--微信平台利用API接口获取网页授权

我这里的例子按照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

%>

好了,到这里程序完成。

手写程序,没有测试,难免会有什么错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值