qqconnect.asp
============================
<%
Class QqConnet
'url编码,只替换默认的字符串
Public Function UrlEncode(ByVal urlstr)
urlstr = Replace(urlstr, "+", "%2B")
urlstr = Replace(urlstr, " ", "+")
urlstr = Replace(urlstr, "=", "%3D")
urlstr = Replace(urlstr, "&", "%26")
urlstr = Replace(urlstr, ":", "%3A")
urlstr = Replace(urlstr, "/", "%2F")
UrlEncode = urlstr
End Function
'请求url,获取请求内容
Public Function RequestUrl(url)
Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP")
XmlObj.open "GET", url, false
XmlObj.send
RequestUrl = XmlObj.responseText
Set XmlObj = nothing
End Function
'构造获取Authorization Code 的url
Public Function AuthorizationCodeUrl()
Dim url, params
url = "https://graph.qq.com/oauth2.0/authorize"
params="response_type=code"
params = params & "&client_id=" & QQ_OAUTH_CONSUMER_KEY
params = params & "&state=" & session("state")
params = params & "&redirect_uri=" & UrlEncode(QQ_CALLBACK_URL)
url = url & "?" & params
AuthorizationCodeUrl = url
End Function
'检测是否合法登录,如果合法,则返回用户信息
Public Function CheckLogin()
Dim oauth_token, openid, oauth_signature, oauth_vericode, timestamp
oauth_token = Trim(Request.QueryString("oauth_token"))
openid = Trim(Request.QueryString("openid"))
oauth_signature = Trim(Request.QueryString("oauth_signature"))
oauth_vericode = Trim(Request.QueryString("oauth_vericode"))
timestamp = Trim(Request.QueryString("timestamp"))
If UrlEncode(oauth_signature) = UrlEncode(hcbus_b64_hmac_sha1(openid & timestamp, QQ_OAUTH_CONSUMER_SECRET)) Then
CheckLogin = Array(openid, oauth_token, oauth_vericode)
Else
CheckLogin = False
End If
End Function
'获取用户信息,得到一个json格式的字符串
Public Function GetUserInfo(token,openID)
Dim url, params, result
url = "https://graph.qq.com/user/get_user_info"
params = "access_token=" & token
params = params & "&oauth_consumer_key=" & QQ_OAUTH_CONSUMER_KEY
params = params & "&openid=" & openID
url = url & "?" & params
GetUserInfo = RequestUrl(url)
End Function
' 获取到Access Token
Public Function getAccessToken(code)
Dim url, params,temp
url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code"
params = "&client_id=" & QQ_OAUTH_CONSUMER_KEY
params = params & "&client_secret=" & QQ_OAUTH_CONSUMER_SECRET
params = params & "&code=" & code
'params = params & "&state=" & session("state")
params = params & "&redirect_uri=" & UrlEncode(QQ_CALLBACK_URL)
url = url & params
temp= RequestUrl(url)
temp=Split(temp,"&expires_in")(0)
temp=Split(temp,"=")(1)
getAccessToken=temp
End Function
'获取 openId
Public Function getOpenID(access_token)
Dim url,temp
url = "https://graph.qq.com/oauth2.0/me?access_token=" & access_token
temp=RequestUrl(url)
temp=Split(temp,"openid"":""")(1)
temp=Split(temp,"""}")(0)
getOpenID=temp
End Function
'获取用户名字,从json字符串里截取相关字符
Public Function pickUserInfo(json,which)
Dim temp
temp = Split(json, """"& which &""":""")(1)
temp = Split(temp, """")(0)
pickUserInfo=temp
End Function
'生成唯一标识符,防止CSRF攻击
Public Function GUID()
Dim objTypeLib
Set objTypeLib = CreateObject("Scriptlet.TypeLib")
GUID = Left(CStr(objTypeLib.Guid),38)
Set objTypeLib = Nothing
End Function
End Class
%>
======================