重症肌无力病友之家电脑乐园 → asp网站的QQ互联实现

发表一个新主题 回复帖子您是本帖第 1216 个阅读者  浏览上一篇主题 刷新本主题 浏览下一篇主题
 主题asp网站的QQ互联实现 适合打印机打印的版本  通过电子邮件发送此页面  添加加到IE收藏夹  报告本帖 
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题 发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

asp网站的QQ互联。
包括三个文件,分别为:
qqlogin.asp
=================内容=================
<!--#include file="qqcommon.asp"-->
<!--#include file="qqconnect.asp"-->
<!--#include file="inc/MD5.asp"-->
<%
Dim qc,url
SET qc = New QqConnet
session("state")=md5(qc.GUID())
url=qc.AuthorizationCodeUrl()
Set qc=nothing
response.redirect(url)
%>
=========结束===================
 

[此帖子已被 海蓝港湾 在 2012-10-31 18:43:17 编辑过]

——————————

转播到腾讯微博 发表时间:2012-10-28 07:08:50  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

qqcommon.asp 内容为:

<%
Const QQ_OAUTH_CONSUMER_KEY = "******"
Const QQ_OAUTH_CONSUMER_SECRET = "b830************185"
Const QQ_CALLBACK_URL = "http://www.9b01.net/zzjwl/qquser.asp"
%>

——————————

转播到腾讯微博 发表时间:2012-10-31 18:45:07  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

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
%>

======================

——————————

转播到腾讯微博 发表时间:2012-10-31 18:47:27  IP:已记录
海蓝港湾
 


门派:全身派

经验值:681012

社区币:12847

发贴数:5978

注册:2005-01-12

体力值:3450

状态:离线

查看海蓝港湾的个人资料 发送短讯息给海蓝港湾 把海蓝港湾加入好友 搜索海蓝港湾发表过的所有主题 搜索海蓝港湾回复过的所有主题发送电邮给海蓝港湾 访问海蓝港湾的主页 复制这个帖子 引用回复这个帖子 断章取义 回复这个帖子 No.1 

qquser.asp

================

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<!--#include file="qqcommon.asp"-->
<!--#include file="qqconnect.asp"-->
<%

Dim qc, result, token, qqid, nickname,touX
Dim code,access_token,openID

If Request.QueryString("state")=session("state") Then
 code=Request.QueryString("code")
 If code<>"" Then
  SET qc = New QqConnet
  access_token=qc.getAccessToken(code)
  openID=qc.getOpenID(access_token)
  Session("openid") = openID
  result=qc.GetUserInfo(access_token,openID)
  nickname=qc.pickUserInfo(result,"nickname")
  session("nickname")=nickname
  touX=qc.pickUserInfo(result,"figureurl")
  session("touX")=touX
  Set qc=nothing
  Response.Redirect "qq.asp"
 End if
End if
Response.Write("登录失败")
response.end
%>

[此帖子已被 海蓝港湾 在 2012-10-31 18:50:35 编辑过]

——————————

转播到腾讯微博 发表时间:2012-10-31 18:49:40  IP:已记录
本主题共有 1 页 [ 1 ] 收藏帖子 | 取消收藏 | 返回页首 

Powered by BBSxp /Licence © 1998-2005
Script Execution Time:0ms
晋ICP备07500169号-1