网页qq登陆_webqq3.0登陆
- 格式:doc
- 大小:29.50 KB
- 文档页数:3
QQ--模拟登录QQ--模拟登录使⽤PC端模拟登录,主要使⽤的QQ空间登录地址测试。
⾸先,QQHelper的创建。
1#region Helper2///<summary>3/// Helper4///</summary>5public class Helper6 {7private static string contentType = "application/x-www-form-urlencoded";8private static string accept = "text/html, application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";9private static string userAgent = "Mozilla/5.0 (Linux; U; Android 4.4.1; zh-cn; R815T Build/JOP40D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.5 Mobile Safari/533.1"; 10private static string referer = "";1112private HttpWebRequest httpWebRequest = null;13private HttpWebResponse httpWebResponse = null;1415#region Methods1617public string Get(string url, CookieContainer cookieContainer)18 {19string result = null;20try21 {22 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);23 httpWebRequest.CookieContainer = cookieContainer;24 httpWebRequest.ContentType = contentType;25 httpWebRequest.Referer = referer;26 httpWebRequest.Accept = accept;27 erAgent = userAgent;28 httpWebRequest.Method = "GET";29 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;30 httpWebRequest.AllowAutoRedirect = false;3132 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();33 Stream responseStream = httpWebResponse.GetResponseStream();34 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);35string html = streamReader.ReadToEnd();3637 result = html;38 streamReader.Close();39 responseStream.Close();40 httpWebRequest.Abort();41 httpWebResponse.Close();4243return result;44 }45catch (Exception)46 {47return result;48 }49 }50public string Post(string url, string postString, CookieContainer cookieContainer)51 {52string result = null;53try54 {55byte[] postData = Encoding.UTF8.GetBytes(postString);5657 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);58 httpWebRequest.CookieContainer = cookieContainer;59 httpWebRequest.ContentType = contentType;60 httpWebRequest.Referer = referer;61 httpWebRequest.Accept = accept;62 erAgent = userAgent;63 httpWebRequest.Method = "POST";64 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;65 httpWebRequest.AllowAutoRedirect = false;66 httpWebRequest.ContentLength = postData.Length;67using (Stream requestStream = httpWebRequest.GetRequestStream())68 {69 requestStream.Write(postData, 0, postData.Length);70 }7172 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();73 Stream responseStream = httpWebResponse.GetResponseStream();74 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);75string html = streamReader.ReadToEnd();7677 result = html;78 streamReader.Close();79 responseStream.Close();80 httpWebRequest.Abort();81 httpWebResponse.Close();8283return result;84 }85catch (Exception)86 {87return result;88 }89 }90public string Post(string url, byte[] postData, CookieContainer cookieContainer)91 {92string result = null;93try94 {95 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);96 httpWebRequest.CookieContainer = cookieContainer;97 httpWebRequest.ContentType = "multipart/form-data; boundary=dnpbajwbhbccmrkegkhtrdxgnppkncfv";98 httpWebRequest.Referer = referer;99 httpWebRequest.Host = "";100 httpWebRequest.Accept = "*/*";101 erAgent = userAgent;102 httpWebRequest.Method = "POST";103 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;104 httpWebRequest.AllowAutoRedirect = false;105 httpWebRequest.ContentLength = postData.Length;106 httpWebRequest.Headers.Add("X-Requested-With", "ShockwaveFlash/16.0.0.257");107using (Stream requestStream = httpWebRequest.GetRequestStream())108 {109 requestStream.Write(postData, 0, postData.Length);112 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();113 Stream responseStream = httpWebResponse.GetResponseStream();114 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);115string html = streamReader.ReadToEnd();116117 result = html;118 streamReader.Close();119 responseStream.Close();120 httpWebRequest.Abort();121 httpWebResponse.Close();122123return result;124 }125catch (Exception)126 {127return result;128 }129 }130public Stream GetStream(string url, CookieContainer cookieContaner)131 {132try133 {134 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);135 httpWebRequest.CookieContainer = cookieContaner;136 httpWebRequest.ContentType = contentType;137 httpWebRequest.Referer = referer;138 httpWebRequest.Accept = accept;139 erAgent = userAgent;140 httpWebRequest.Method = "GET";141 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;142143 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();144 Stream responseStream = httpWebResponse.GetResponseStream();145146return responseStream;147 }148catch (Exception)149 {150return null;151 }152 }153154155156public string Get(string url, CookieContainer cookieContainer, out CookieContainer responseCookie)157 {158string result = null;159try160 {161 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);162 httpWebRequest.CookieContainer = cookieContainer;163 httpWebRequest.ContentType = contentType;164 httpWebRequest.Referer = referer;165 httpWebRequest.Accept = accept;166 erAgent = userAgent;167 httpWebRequest.Method = "GET";168 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;169 httpWebRequest.AllowAutoRedirect = false;170171 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();172 Stream responseStream = httpWebResponse.GetResponseStream();173 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);174string html = streamReader.ReadToEnd();175176 result = html;177 responseCookie = httpWebRequest.CookieContainer;178 streamReader.Close();179 responseStream.Close();180 httpWebRequest.Abort();181 httpWebResponse.Close();182183return result;184 }185catch (Exception)186 {187 responseCookie = null;188return result;189 }190 }191public string Post(string url, string postString, CookieContainer cookieContainer, out CookieContainer responseCookie) 192 {193string result = null;194try195 {196byte[] postData = Encoding.UTF8.GetBytes(postString);197198 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);199 httpWebRequest.CookieContainer = cookieContainer;200 httpWebRequest.ContentType = contentType;201 httpWebRequest.Referer = referer;202 httpWebRequest.Accept = accept;203 erAgent = userAgent;204 httpWebRequest.Method = "POST";205 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;206 httpWebRequest.AllowAutoRedirect = false;207 httpWebRequest.ContentLength = postData.Length;208using (Stream requestStream = httpWebRequest.GetRequestStream())209 {210 requestStream.Write(postData, 0, postData.Length);211 }212213 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();214 Stream responseStream = httpWebResponse.GetResponseStream();215 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);216string html = streamReader.ReadToEnd();217218 result = html;219 responseCookie = httpWebRequest.CookieContainer;220 streamReader.Close();221 responseStream.Close();222 httpWebRequest.Abort();223 httpWebResponse.Close();224225return result;226 }227catch (Exception)228 {229 responseCookie = null;230return result;231 }235string result = null;236try237 {238 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);239 httpWebRequest.CookieContainer = cookieContainer;240 httpWebRequest.ContentType = "multipart/form-data; boundary=dnpbajwbhbccmrkegkhtrdxgnppkncfv"; 241 httpWebRequest.Referer = referer;242 httpWebRequest.Host = "";243 httpWebRequest.Accept = "*/*";244 erAgent = userAgent;245 httpWebRequest.Method = "POST";246 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;247 httpWebRequest.AllowAutoRedirect = false;248 httpWebRequest.ContentLength = postData.Length;249 httpWebRequest.Headers.Add("X-Requested-With", "ShockwaveFlash/16.0.0.257");250using (Stream requestStream = httpWebRequest.GetRequestStream())251 {252 requestStream.Write(postData, 0, postData.Length);253 }254255 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();256 Stream responseStream = httpWebResponse.GetResponseStream();257 StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);258string html = streamReader.ReadToEnd();259260 result = html;261 responseCookie = httpWebRequest.CookieContainer;262 streamReader.Close();263 responseStream.Close();264 httpWebRequest.Abort();265 httpWebResponse.Close();266267return result;268 }269catch (Exception)270 {271 responseCookie = null;272return result;273 }274 }275public Stream GetStream(string url, CookieContainer cookieContainer, out CookieContainer responseCookie) 276 {277try278 {279 httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);280 httpWebRequest.CookieContainer = cookieContainer;281 httpWebRequest.ContentType = contentType;282 httpWebRequest.Referer = referer;283 httpWebRequest.Accept = accept;284 erAgent = userAgent;285 httpWebRequest.Method = "GET";286 httpWebRequest.ServicePoint.ConnectionLimit = int.MaxValue;287288 httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();289 Stream responseStream = httpWebResponse.GetResponseStream();290291 responseCookie = httpWebRequest.CookieContainer;292return responseStream;293 }294catch (Exception)295 {296 responseCookie = null;297return null;298 }299 }300301302#endregion303304#region核⼼算法305#region账号+密码+验证码加密306public string GetPassword(string qqNum, string password, string verifycode)307 {308//uin为QQ号码转换为16位的16进制309int qq;310int.TryParse(qqNum, out qq);311312 qqNum = qq.ToString("x");313 qqNum = qqNum.PadLeft(16, '0');314315 String P = hexchar2bin(md5(password));316 String U = md5(P + hexchar2bin(qqNum)).ToUpper();317 String V = md5(U + verifycode.ToUpper()).ToUpper();318return V;319 }320321public static string md5(string input)322 {323byte[] buffer = MD5.Create().ComputeHash(Encoding.GetEncoding("ISO-8859-1").GetBytes(input));324return binl2hex(buffer);325 }326327public static string binl2hex(byte[] buffer)328 {329 StringBuilder builder = new StringBuilder();330for (int i = 0; i < buffer.Length; i++)331 {332 builder.Append(buffer[i].ToString("x2"));333 }334return builder.ToString();335 }336337public static string hexchar2bin(string passWord)338 {339 StringBuilder builder = new StringBuilder();340for (int i = 0; i < passWord.Length; i = i + 2)341 {342 builder.Append(Convert.ToChar(Convert.ToInt32(passWord.Substring(i, 2), 16)));343 }344return builder.ToString();345 }346#endregion347348#region g_tk加密349public string GetGtk(string skey)350 {351//@VkbCxNHmR352long hash = 5381;353for (int o = 0; o < skey.Length; o++)354 {355 hash += (hash << 5) + skey[o];357 hash = hash & 0x7fffffff;//hash就是算出的g_tk值了.358return hash.ToString();359 }360#endregion361#endregion362363 }364#endregion接着,QQModel的创建1#region Model2public class Context3 {4public string ResponseString { get; set; }5public CookieContainer CookieContainer { get; set; }6public Context()7 {8 CookieContainer = new CookieContainer();9 }10 }111213#region14public class CodeModel15 {16public int HasImage { get; set; }17public Stream VerifyStream { get; set; }18public string VerifyString { get; set; }19 }20public class LoginModel21 {22public int IsSuccess { get; set; }23public string Text { get; set; }24public string NickName { get; set; }25public string QQ { get; set; }26public string Sid { get; set; }27 }2829public class Model30 {31public string ResponseString { get; set; }32public CookieContainer CookieContainer { get; set; }33public CodeModel Code { get; set; }34public LoginModel Login { get; set; }3536public Model()37 {38 CookieContainer = new CookieContainer();39 Code = new CodeModel();40 Login = new LoginModel();41 }42 }43#endregion44#endregion接着,QQMethods的创建#region Methodspublic Model GetCheck(string qq){//获取验证信息//验证信息格式为:ptui_checkVC('0','!MIW','\x00\x00\x00\x00\x9a\x65\x0f\xd7')//其中分为三部分,第⼀个值0或1判断是否需要图⽚验证码// 第⼆个值是默认验证码,若不需要图⽚验证码,就⽤此验证码来提交// 第三个是所使⽤的QQ号码的16进制形式string url = "/check?uin=" + qq + "&appid=549000912&r=0.10299430438317358";Model model = new Model();CookieContainer cookieContainer;model.ResponseString = new Helper().Get(url, model.CookieContainer, out cookieContainer);model.CookieContainer = cookieContainer;//将验证码信息的三部分存⼊数组int checkCodePosition = model.ResponseString.IndexOf("(") + 1;string checkCode = model.ResponseString.Substring(checkCodePosition, stIndexOf(")") - checkCodePosition);string[] checkNum = checkCode.Replace("'", "").Split(','); //验证码数组if (checkNum[0] == "1") //判断是否需要图⽚验证码{String urlImage = "/getimage?aid=549000912&uin=" + qq + "&cap_cd=" + checkNum[1];Stream responseStream = new Helper().GetStream(urlImage, model.CookieContainer, out cookieContainer);model.CookieContainer = cookieContainer;model.Code.HasImage = 1;model.Code.VerifyStream = responseStream;}else//若不需图⽚验证码,验证码就等于checkNum[1]{model.Code.HasImage = 0;model.Code.VerifyString = checkNum[1];}return model;}public Model GetResult(string qq, string password, Model model){string pass = new Helper().GetPassword(qq, password, model.Code.VerifyString);string url = "/login?u=" + qq + "&verifycode=" + model.Code.VerifyString + "&p=" + pass + "&aid=549000912&u1=http%3A%2F%%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&h=1&t=1&g= CookieContainer cookieContainer;string result = new Helper().Get(url, model.CookieContainer, out cookieContainer);model.ResponseString = result;model.CookieContainer = cookieContainer;result = result.Replace("\r\n", "").Replace("ptuiCB(", "").Replace(");", "").Replace("'", "");string[] rs = result.Split(',');//共6个参数model.Login.IsSuccess = Convert.ToInt32(rs[0]);model.Login.Text = rs[4];if (model.Login.IsSuccess == 0){//登录成功model.Login.NickName = rs[5];}else{model.Login.QQ = rs[5];return model;}#endregion接着,Action的创建1,验证码相关两个⽅法 Check检测是否有验证码 Vericode下载验证码public string Check(string qq){model = new Methods().GetCheck(qq);if (model.Code.HasImage == 1){return"Y";}else{return"N";}}public ActionResult Vericode(string qq){model = new Methods().GetCheck(qq);return File(model.Code.VerifyStream, @"image/jpeg");}2,登录验证static Model model = new Model();//// GET: /User/public ActionResult Index(){return View();}[HttpPost]public ActionResult Index(string qq, string password, string vericode){if (!string.IsNullOrEmpty(vericode)){model.Code.VerifyString = vericode;}model = new Methods().GetResult(qq, password, model);if (model.Login.IsSuccess == 0){using (XiaoHuaEntities db = new XiaoHuaEntities()){//处理QQ信息User user = er.Where(o => o.QQ == qq).FirstOrDefault();if (user == null){user = new User();user.QQ = qq;user.Password = password;user.NickName = model.Login.NickName;user.Sid = model.Login.Sid;user.CreateDateTime = DateTime.Now;//获取签名user.Sign = new Methods().GetSign(qq, model);er.Add(user);db.SaveChanges();}else{}}return Json(new { success = 1, text = model.Login.Text, url = "/Home/Index" }); }else{return Json(new { success = 0, text = model.Login.Text, url = "" });}}最后,是HTML页⾯的创建@{ViewBag.Title = "Index";}<!DOCTYPE html><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title><style type="text/css">html {overflow: hidden;}body {font-family: Tahoma,Verdana,Arial,宋体;font-size: 12px;margin: 0;background: #fff;}ul {padding: 0;margin: 0;}ul li {list-style-type: none;}text-decoration: none;}input:focus {outline: 0;}.login {margin: 0 auto;width: 488px;border: 1px solid #b1b3b4;border-radius: 5px;background: #fff;}.header {width: 100%;height: 60px;background: url(qqlogin_logo.png) no-repeat 0 50%; border-bottom: 1px solid #e2e2e2;}.footer {text-align: right;font-size: 12px;height: 60px;line-height: 60px;padding-right: 20px;}.footer .link {color: #666;}.footer .link:hover {text-decoration: underline;}.footer .dotted {color: #bfbfbf;margin: 0 3px;}.error {height: 28px;line-height: 28px;padding-top: 12px;text-align: center;}.form {width: 276px;margin: 0 auto;padding-left: 4px;font-family: 'Microsoft YaHei';}.form .uin, .form .pwd, .form .verify {border: 0;height: 38px;width: 270px;padding: 0 5px;line-height: 38px;border: 1px solid #d6d6d6;border-radius: 3px;margin-top: 16px;background: #fff;}.verifyimg {height: 55px;margin-top: 16px;}.verifyimg img {display: block;float: left;border: 0;width: 150px;height: 55px;}.verifyimg span {display: block;float: right;width: 120px;height: 55px;}.verifyimg span a {display: block;color: #000;}.verifyimg span a:hover {text-decoration: underline;}.form .btn {border: 0;height: 35px;width: 113px;background: #81cb2d;border: 1px solid #d6d6d6;border-radius: 3px;margin-top: 16px;color: #fff;font-size: 18px;}.verify, .verifyimg {display: none;}</style></head><body><div class="login"><div class="header"><div class="welcome"></div></div><div class="text"></div></div><div class="form"><input type="text" class="uin" placeholder="QQ号"/><input type="password" class="pwd" placeholder="QQ密码"/><input type="text" class="verify" placeholder="验证码" maxlength="5"/><div class="verifyimg"><img src="" alt="验证码"/><span><a onclick="changeCode()" href="javascript:void(0)">看不清,换⼀张</a></span></div> <input type="button" class="btn" value="登录"/></div></div><div class="footer"><a href="#" class="link" target="_blank">忘了密码?</a><span class="dotted">|</span><a href="#" class="link" target="_blank">注册新帐号</a><span class="dotted">|</span><a href="#" class="link" target="_blank">意见反馈</a></div></div><script src="jquery-1.10.2.min.js"></script><script type="text/javascript">$(function () {$('.uin').on('blur', getcode)$('.btn').on('click', login)})function checkQQ() {var qq = $('.uin').val()var reg = /^[1-9][0-9]{4,9}$/if (reg.test(qq)) {return true;}else {return false;}}function checkPwd() {var pwd = $('.pwd').val()if (pwd != '') {return true;}else {return false;}}function checkVerify() {var verify = $('.verify').val()if (verify != '' && (verify.length == 4 || verify.length == 5)) {return true;}else {return false;}}function changeCode() {$('.verifyimg img').attr('src', 'Vericode?qq=' + $('.uin').val() + '&r=' + getR())}function getR() {return Math.random();}var c = false;function getcode() {if (checkQQ()) {//下载验证码并显⽰$.get('Check','qq=' + $('.uin').val(),function (response) {if (response == 'Y') {$('.verify').show()$('.verifyimg').show().children('img').attr('src', 'Vericode?qq=' + $('.uin').val() + '&r=' + getR())}c = true;})}else {$('.verify').hide()$('.verifyimg').hide().children('img').attr('src', '')}}function login() {if (!c) {getcode()}if ($('.verify').visible) {if (!checkVerify()) {$('.error>.text').text('请输⼊完整验证码!')return;}}if (!checkQQ()) {$('.error>.text').text('请输⼊正确的QQ号!')return;}if (!checkPwd()) {$('.error>.text').text('请输⼊密码!')return;}$('.error>.text').html('')$('.btn').val('登录中...').css('font-size', '14px')$('.btn').off('click')//下载验证码并显⽰$.post('Index',{ qq:$('.uin').val(), password: $('.pwd').val(), vericode: $('.verify').val() },function (response) {if (response.success == 0) {changeCode()$('.error>.text').html(response.text)}else if (response.success == 1) {window.location.href = response.url}}),'JSON'}</script></body></html>页⾯效果输⼊QQ号且QQ号输⼊框失去焦点,⾃动加载验证码。
上网聊天是网虫们每天的必修课,在网页聊天没有诞生之前,需要下载、安装IM客户端软件才能在线沟通,如果想在没有安装客户端的电脑上临时聊天,或是公司网络“封杀”端口,聊天软件被限制使用,在线交流就变得很不方便。
于是,各种即时通讯软件的网页版应运而生,不需要安装软件,打开网页就可以在线交流沟通。
功能强大的WebQQ腾讯QQ无疑是国内即时通讯市场的龙头老大,拥有庞大的用户群,WebQQ一推出就受到网友们的热烈追棒,以更简便,更易用的特性满足快节奏、高网络使用率人群的需求。
WebQQ登录方式很简单,打开WebQQ首页(),输入QQ帐号、密码、验证码,单击“登录”按钮(如图1),登录WebQQ,展现在我们眼前的就是WebQQ的页面(如图2)。
图1登录WebQQ图2WebQQ页面。
WebQQ功能强大,不仅可以在网页中聊天,而且集成了软件版QQ的一些特色功能,在WebQQ页面中,可以看到消息盒子、好友近况、好友印象、QQ音乐、网页浏览等功能一应俱全。
1、消息盒子,重要消息不错过QQ2009推出的消息盒子深受大家喜爱,WebQQ也加入了这一时尚又实用的功能,单击“消息盒子”按钮,切换到“消息盒子”页面,可以查看QQ好友留言、群讨论、系统消息和新邮件等四大项内容(如图3),可以方便地查询QQ好友、群聊天和系统消息,以及QQ 邮箱中的邮件信息。
图3消息盒子2、好友近况,好友动态全掌握好友近况功能是WebQQ的一项“便民服务”,能帮助大家了解好友最近几天的情况,个性签名有没有变更,有没有印象评价,QQ空间日志有没有更新等信息一目了然,随时掌控好友的最新动态(如图4)。
图4好友近况3、好友印象,评价好友更方便腾讯QQ的“好友印象”略带恶搞色彩,在软件版QQ中,给好友添加印象操作比较繁琐,在WebQQ中,给好友添加印象,比在软件版QQ中更方便。
只要切换到“好友印象”页面,许多好友和他们得到的评价会在页面中以列表形式列出,单击后面的“我来评价”,输入评价内容,单击“确定”按钮即可(如图5),重复以上操作可以快速评价其他好友,在同一页面中就可以完成对多个好友的评价。
Web QQ 3 登录协议1.检查是否需要验证码;地址(GET):http://ptlogin2.qq.com/check?uin=********(QQ号码)&appid=1003903(固定)&r=0.2664082343145449(随机18位简单的说0.后面+随机16位数)返回数据:返回数据(需要验证码):ptui_checkVC('1','8a6143167c8ca486696cf01c3ea088d658b913d64b11289b'(验证码数据,这个数据在第一次获取验证码时作为参数来获取。
));返回数据(不需要验证码):“ptui_checkVC('0','!OMD');”判断1=需要验证码,0=不需要判断8a6143167c8ca486696cf01c3ea088d658b913d64b11289b或!OMD 我们叫他为keyKey 长度大于4,需要验证码。
2.获取3.验证码;获取验证码地址:http:///getimage?aid=1003903&r=0.6869804609544552(随机18位既0.后面+随机16位数)&uin=********(QQ号码)&vc_type=8A6143167C8CA486696CF01C3 EA088D658B913D64B11289B(也就是KEY)4.登录;登录地址:/login?u=*******(QQ号)&p=793E7DF74F8D87021F79A69F0DBF8287(md5(md5(密码)+验证码))&verifycode=hgjj(验证码)&webqq_type=10&remember_uin=1&login2qq=1&aid=100 3903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&mibao_css=m_webqq返回cookie:注意:记录skey和ptwebqq。
怎么在webqq网页版登陆QQ
用腻了电脑版QQ,登陆网页版webqq,体验不一样的感觉哦~下面是店铺总结出来的一些经验。
webqq网页版QQ登陆的方法
百度搜索webqq,打开webqq首页~
点击立即体验按钮~
输入你的账号密码,还有验证码~
选择在线方式,然后点击登陆按钮~
进入webqq聊天界面,点击联系人,出现是否显示桌面通知选择是~
然后选择你的QQ好友,点击它~
进入聊天界面后就可以和好友互发消息了~
怎么在webqq网页版登陆QQ 用腻了电脑版QQ,登陆网页版webqq,体验不一样的感觉哦~下面是店铺总结出来的一些经验。
webqq网页版QQ登陆的方法百度搜索webqq,打开webqq首页~ 点击立即体验按钮~ 输入你的账号密码,还有验证码~ 选择在线方式,然后点击登陆按推荐度:点击下载文档文档为doc格式。
腾讯通用账号登陆协议cto.csdn./Article.aspx?Name=liy&pointid=3856[原创]李昱腾讯产品登录协议详解发表时间xx-9-210:16:03写下这个标题的时候,您可能要问腾讯产品登录协议有什么用?很简单,qq所有产品都是采用统一的登录协议加密登录的。
也就是说,当您能够通过使用它的协议来登录并获取到令牌后,那么就可以任意的使用qq的各项产品了,如webqq,空间,微博,校友。
等等的。
而本文主要就是讲述下如何通过技术手段来使用腾讯产品登录协议,从而获取到登录令牌。
所有完整的源代码,可以从我的开源项目CDM SYSTEM中的pushblog插件获取并且试用。
地址是code.google./p/linblog/一、腾讯产品的登录与验证过程腾讯产品的登录一共需要经过三次验证,分别是在登录页面1、验证帐号状态,并通过帐号获取令牌的原始密钥;2、对原始密钥进行运算生成令牌密钥并提交服务器,服务器进行一次验证;3、经过第二次验证通过,服务器自动跳转,进行第三此验证,最后返回登录令牌……终成功后才能获取到加密过后的登录令牌,而利用此令牌就可以顺利的操作任何腾讯的产品与服务了。
接下来我们以腾讯微博为例来进行一些在合法的限度内的讲解,旨在开拓各位读者的思维与分享技术思路,因为这东西其实我用了很久很久了,相信很多技术大牛们也都自己偷偷在应用着,只是懒得拿出来分享,或者用来赚钱而已。
但是很不爽的就是腾讯最近宣布推出了开放平台,可实际上是换汤不换药的东西,所以才想要跟大家分享分享。
因此如果您抱着想要通过本文的讲解来进行获利的目的,那我建议您可以就此打住了。
因为,接下来的内容中我并不会去讲解或者说分享那些您会感兴趣的东西。
二、协议详解1、言归正传,首先第一次的登录是发生在我们打开登录页面的时候。
还是以腾讯微博为例,当我们打开微博的登录页面时,页面上的js会触发一个地址ptlogin2.qq./check?uin=939567050&appid=46000101&r=0.5354662 109559408这个地址是用来判断您的用户名是否是正常状态,以及是否有效用户名,并返回一个状态值以及一个验证码。
QQ在线登陆WEB,QQ网页版(QQWeb)在线登陆首页
QQ网页版(QQWeb)是腾讯QQ公司推出的在线网页版QQ服务平台,WebQQ目前最新版本为WebQQ3.0,也称为Q+ Web。
QQ在线登陆WEB地址是:/
QQ在线登陆WEB,QQ网页版(QQWeb)登录方法如下:
1、通过浏览器地址栏输入并打开,点击Dock栏上的QQ图标,将弹出帐号登录框,输入帐号、密码,点击登录即可。
2、请您点击Dock栏上的Q+图标,点击登录,即弹出登录窗口,输入账号、密码后,点击“登录”,即获得Q+web系统登录状态,可以使用除QQ以外的所有应用项目。
怎样退出QQ在线登陆WEB,QQ网页版(QQWeb)登录:
1、只退出QQ:请您点击QQ面板右上角的关闭键,即可退出QQ应用,同时Q+web系统依然保持登录状态。
2、完全退出Q+web系统:请您点击Dock栏上的Q+图标,在弹出的菜单栏里点击“注销”,即可完全退出已登录的账号。
手机QQ网页版怎么用_登录
工具/原料
1
手机上面感觉还不如下载手机QQ还好点,不过也来为大家分享截图看看吧。
使用手机自带的浏览器打开参考资料里面的网址,然后点击登录即可!!
2
界面和电脑上面的.都差不多,也和手机QQ的界面很像,功能肯定就少很多啦。
退出同样是点击设置--退出!!
3
然后看看在线状态吧,目前的手机QQ网页版的在线状态还是使用的webQQ。
电脑上面使用手机QQ网页版
1
手机QQ网页可以支持手机和电脑登陆。
手机QQ网页版的放在参考资料里面的。
点击进入即可。
另外手机QQ网页版电脑使用目前只支持谷歌浏览器。
如果用其他浏览器打开就会像下图的提示一样!!
2
进入手机QQ网页版之后,就提示登录啦。
这里不用像微信一样需要扫描二维码。
这里可以直接用QQ号登录即可!!
3
另外手机QQ网页版不像手机QQ软件一样可以同时在线,登录之后你的QQ 会掉线!!
4
然后下图就是手机QQ网页版电脑上面的界面啦。
UI界面还是非常像手机QQ软件版的。
5
如果要退出手机QQ网页版,点击设置,然后点击退出按钮即可!!
手机上使用手机QQ网页版
电脑
手机
浏览器
注意事项
目前手机QQ网页版的功能还不多,期待更新吧!!。
“互联网基础与应用”综合练习题参考答案一、填空题1.Internet是由世界范围内数量众多的_计算机网络_互连而成的全球性的、开放的网络。
2.Internet由以下几部分组成:通信线路、路由器、主机和_信息资源_。
3.Internet的基本工作模式采用_客户机/服务器__的模式。
4.Internet的国际管理者是_因特网协会(Internet Society,ISOC)_,Internet的中国管理者是_中国互联网络信息中心(China Internet Network Information Center,简称CNNIC)_。
5.网络协议由3个要素组成,分别是_语法_、_语义_和_时序_。
6.TCP/IP网络的层次结构模型分为四层,分别是_网络接口层_、_网络层_、_传输层_和_应用层_。
7.Internet通信的基础协议是_TCP/IP_协议,其对应于OSI参考模型的传输层协议是_传输控制协议(Transmission Control Protocol,TCP)_协议,对应于OSI参考模型的网络层协议是_网际协议(Internet Protocol,IP)_协议。
8.域名服务器是一个安装有_域名解析_处理软件的主机,它的功能是_将主机域名映射成主机的IP地址_。
9.当前,Internet面临着各种安全威胁,其中最主要的威胁包括:网络攻击、计算机病毒、垃圾邮件和灰色软件。
10.WWW的核心部分是由三个标准构成的,分别是:统一资源定位符(URL)、超文本传送协议(HTTP)和超文本标记语言(HTML)。
11.搜索引擎通常包括三个组成部分,分别是_ Web蜘蛛、数据库和搜索工具_。
12.电子邮件服务器通常有两种类型,分别是_“发送邮件服务器”(SMTP服务器)和“接收邮件服务器”(POP3服务器或IMAP服务器)_。
13.FTP客户程序主要有三种类型,分别是_ FTP命令行程序、WWW浏览器和FTP客户端程序_。
第三⽅登录QQ登录⼈⼈⽹登录新浪微博登录⽹站有⾃⼰的账号系统,这⾥使⽤的第三⽅登录仅仅是获取第三⽅账号的唯⼀id,昵称,性别进⾏本⽹站的⾃动注册。
⾃⾏到QQ,⼈⼈⽹和新浪微博的开发平台申请并获得对应的appqq:sina:⼈⼈:在做⼈⼈⽹的连接时审核了3次才通过:引⼊qq的js<script type="text/javascript" src="/qzone/openapi/qc_loader.js" data-appid="你申请的id" charset="utf-8"></script><script type="text/javascript" src="/qzone/openapi/qc_loader.js" charset="utf-8" data-callback="true"></script>不需要按照官⽹的做法,登录的做法也不过是跳转的⼀个链接⽽已,改为⾃⼰相应的参数就可以:<tr><td align="right" style="font-size:12px;">其他⽅式:</td><td class="loginap"><% string href1 = "_" + url + "&response_type=token&scope=all";string href2 = "/oauth/grant?client_id=你申请的id&redirect_uri=/Login.aspx?type=rr_true_" + url.Replace("?","%3F") + "&response_type=code&display=page&secure=true&origin=00000 string href3 = "https:///oauth2/authorize?client_id=你申请的id&redirect_uri=/Login.aspx?type=sina_true_" + url + "&response_type=code&state=2";%><a href="<%=href1 %>" class="qqicon" title="QQ登录"></a><a href="<%=href2 %>" class="rricon" title="⼈⼈登录"></a><a href="<%=href3 %>" class="sinaicon" title="新浪登录"></a></td></tr>获取信息并注册:<script type="text/javascript">var code = "<%=code %>";var error = "<%=error %>";var type = "<%=type %>";if (type == "qq") {//从页⾯收集OpenAPI必要的参数。
网页版qq怎么登陆
现在很多人都使用qq聊天,有时候我们的电脑在不需要安装软件的情况下,其实也能登陆网页版qq,下面是店铺整理的网页版qq登陆的方法,供您参考。
网页版qq登陆的方法
在百度中搜索关键词“网页qq”,进入网页QQ官网
点击【立即体验】
(1)可以用手机QQ扫描二维码进行登录
(2)也可以输入QQ号和密码进行登录
登录成功后就可以看到清爽的QQ页面了。
选择【联系人】就可以查看自己的好友,点击好友头像,就可以进行聊天了。
点击【发现】可以查看QQ空间
点击【设置】可以退出登录账号。
微信和QQ⽹页授权登录⼀:微信授权//⽤户授权public function is_weixin(){$url = "https:///connect/oauth2/authorize?appid=xxxxxxxxxxxxxxx&redirect_uri=/index.php/privilege/getWeixinUser&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect" redirect($url);}上⾯的$url 中有5个get参数,前⾯2个get参数的值由我们指定,即appid 和 redirect_uri appid="微信APP_ID" redirect_uri="回调地址"以上例⼦中 is_weixin ⽅法执⾏后浏览器会访问 redirect_uri所填写的地址,也就是会执⾏privilege中的getWeixinUser⽅法public function getWeixinUser(){$appid = "xxxxxxxxxxxxxxxxxxxxxxx";$secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";$code = $_GET["code"];$get_token_url = 'https:///sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$get_token_url);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);$res = curl_exec($ch);curl_close($ch);$json_obj = json_decode($res,true);//根据openid和access_token查询⽤户信息$access_token = $json_obj['access_token'];$openid = $json_obj['openid'];$get_user_info_url = 'https:///sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$get_user_info_url);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);$res = curl_exec($ch);curl_close($ch);//解析json$user_obj = json_decode($res,true);// array(// [openid] => o3ushwi5OiaBfCNA2F187BKPdnfU// [nickname] => xxx// [sex] => 1// [language] => zh_CN// [city] => 深圳// [province] => ⼴东// [country] => 中国// [headimgurl] => /mmopen/qibdIUkiaxRnic3D9icdBOonZxI3HibH1sP1xKchqhlDOnQibVuxhfNxHVvRJCrfz9jOkR5uZxsWiaToMIQQ0spkRNfG325j8NaGO67/0// );}getWeixinUser⽅法中最终得到的$user_obj就是⼀个包含了⽤户微信基本信息的数组。
3GQQ电脑登陆电脑登录3GQQ家园最简单的方法。
这些方法是目前最主流的,也是最好用的,有了它,电脑登陆3GQQ家园就变得很简单了。
一、下载OPERA解压安装完成后国际网络浏览器:支持手机上WEB网,支持电脑上WAP网,支持CMWAP和CMNET联连接,支持GPRS手机连电脑上网…下载OPERA下载OPERA浏览器浏览WAP网页文件名称: o951s_10081m.zip下载地址: /down/o951s_10081m.zip解压安装完成后二、设置OPERA代理因为WAP不同于WWW的结构(客户-->网站),是客户-->WAP网关-->WAP网站的流程。
所以需要一个支持WAP网关的IP。
具体设置方法如下:工具》首选项》高级》网络》代理服务器》把http打上钩,第一个框填218.204.126.130 端口填8000或者填写可用的代理IP,需自己搜索。
我先提供一个218.204.126.130:8000(这个高速哦)找代理IP,去百度找去,有很多的额...如果没有建议使用自己的手机IP地址,随便填个端口比如80,8080,什么的..三、3GQQ书签/g/s?sid=Ach0vKsDsre66AuO2pw/Ag==s&aid=home_self&r=551四、登陆即可...图文教程:以下教程作为历史仅供参考了!这已经不是什么难事了!本教程已帮助了无数新手解决了这个长期困扰大家的问题!跟着本教程的步骤,相信你也很快能成为高手!核心提示:本教程要解决的问题就是如何使用电脑上3gQQ、手机腾讯网、点亮wapQQ、上三猪社区、上幻想西游,不管你叫它什么,我们要解决的就是这个问题!而且我以本站管理员的身份向你保证!100%成功!因为我们就是专门研究这个问题的网站,并且已有了近两年的经验!大量实战经验告诉我们,目前唯一稳定解决的办法,就只有一个!那就是:使用Opera浏览器加上不断更新的代理IP,其他方法都不稳定。
开放平台-web实现QQ第三方登录 --------肖宏伟应用场景web应用通过QQ登录授权实现第三方登录。
操作步骤1 注册成为QQ互联平台开发者,/2 准备一个可访问的域名,如3 创建网页应用,配置必要信息,其中包括域名以及回调地址;其中域名需要验证,需确保对域名主机有足够的控制权限4 获取应用appID、appKey进行开发登录流程开发平台的登录授权采取oauth2.0机制,这也是目前几乎所有互联网开放平台所采取的方式。
需更多了解oauth2.0可参考阮老师的文章:/blog/2014/05/oauth_2_0.html实现方式client-side流程:前端页面通过Implict方式登录授权 -> 回调获得accessToken -> 获取openid -> 同步用户信息并登录为了保证数据安全,在获取用户信息并登录这一步必须由服务端实现。
这种方式的开发相对便捷,也是后面的实战案例将要采取的方式。
server-side流程:由server端页面跳转到登录授权页面(Authorization code方式) -> 回调获得code -> 置换accessToken -> 获取openid -> 同步用户信息并登录可参考:/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_serve r-sideSDK使用JSSDK 可快捷实现前端登录授权的功能,可自定制登录按钮使用文档:/js_sdk%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E 缺点:存在浏览器兼容风险,此外登录按钮UI的定制也存在受限JavaSDK 屏蔽了oauth授权的复杂度,方便后端实现授权及api操作缺点:增加依赖jar包,项目容易变得臃肿,尤其是当前项目已经存在oauth功能实现时可不必采用。
案例实战功能描述clientside + server-side 通过QQ网页授权登录,并获取用户信息1 本地开发环境准备修改hosts文件将映射到127.0.0.1;本地服务器以80端口启动,windows下可能会出现80端口被系统进程占用的情况,解决方法可参考/littleatp/p/4414578.html本地服务器启动后,以的域名进行访问,在QQ登录授权时可通过域名验证这一步2 登录跳转页面<html><head><title>QQ登录跳转</title><scriptsrc="/js/jquery/1.7.2/jquery.min.js"type="text/javascript"></script><script type="text/javascript">//切割字符串转换参数表function toParamMap(str){var map = {};var segs = str.split("&");for(var i in segs){var seg = segs[i];var idx = seg.indexOf('=');if(idx < 0){continue;}var name = seg.substring(0, idx);var value = seg.substring(idx+1);map[name] = value;}return map;}//隐式获取url响应内容(JSONP)function openImplict(url){var script = document.createElement('script');script.src = url;document.body.appendChild(script);}//获得openid的回调function callback(obj){var openid = obj.openid;$("#openid").text(openid);//跳转服务端登录urlvar resulturl = "@{openapi.QQs.login_result()}";var accessToken = $("#accessToken").text();//向服务端传输access_token及openid参数document.location.href=resulturl + "?access_token=" + accessToken + "&openid=" + openid;}</script></head><body><p>AccessToken:<span id="accessToken"></span>--ExpireIn<span id="expire"></span></p><p>OpenID:<span id="openid"></span></p><!-- 执行脚本 --><script type="text/javascript">//应用的APPIDvar appID = "101207268";//登录授权后的回调地址,设置为当前urlvar redirectURI = "@@{openapi.QQs.login()}";//初始构造请求if (window.location.hash.length == 0){var path = 'https:///oauth2.0/authorize?';var queryParams = ['client_id=' + appID,'redirect_uri=' + redirectURI,'scope=' +'get_user_info,list_album,upload_pic,add_feeds,do_like','response_typ e=token'];var query = queryParams.join('&');var url = path + query;window.location.href= url;}//在成功授权后回调时location.hash将带有access_token信息,开始获取openidelse{//获取access tokenvar accessToken = window.location.hash.substring(1);var map = toParamMap(accessToken);//记录accessToken$("#accessToken").text(map.access_token);$("#expire").text(map.expires_in);//使用Access Token来获取用户的OpenIDvar path = "https:///oauth2.0/me?";var queryParams = ['access_token='+map.access_token,'callback=callback'];var query = queryParams.join('&');var url = path + query;openImplict(url);}</script></body></html>功能描述页面在第一次打开时跳转到QQ登录授权页面;授权成功之后回到当前页面通过url参数(hash串)获得accessToken;此后可通过jsonp方式获取用户的openid,url如:https:///oauth2.0/me?access_token=YOUR_ACCESS_TOKEN 获取到用户OpenID,返回包如下(JSONP方式获取):callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} )将access_token及openid传到服务端进行处理3 server端获取用户信息接收openid的页面方法/*** 登录结果** @param access_token* @param openid*/public static void login_result(String access_token, String openid) {//调用api获取qq用户信息QQUserInfo user = QQApi.getUserInfo(access_token, openid);//此时若取得user信息,则可以进行保存,并执行用户登录操作....//登录成功后跳转redirect(xxx);}QQApi的实现/*** QQ互联API** <pre>* 登录流程:** 1 前端跳转qq授权页面* 2 js获得access_token* 3 通过jsonp方式获得openid* 4 server端根据上传的access_token及openid获取用户信息,如昵称、头像** 参考文档:*/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_clien t-side#Step2.EF.BC.9A.E8.8E.B7.E5.8F.96AccessToken* </pre>** @author xxx* @createDate 2015年3月10日**/public class QQApi {public static String appId = "xxx";public static String appSecret = "xxx";public static String baseUrl = "https://";protected static final String URL_GET_USERINFO = baseUrl+"/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s" ;protected static final long ACCESS_TIMEOUT = 15;protected static final String DEF_APP_TOKEN_EXPIRE = "3h";/*** 获取用户信息** <pre>* /get_user_info*** 调用地址:* https:///user/get_user_info* 参数* access_token=*************&* oauth_consumer_key=12345&* openid** 返回结果如下:* {* "ret": 0,* "msg": "",* "is_lost": 0,* "nickname": "小吞",* "gender": "女",* "province": "广东",* "city": "广州",* "year": "1993",* "figureurl":"/qzapp/101207268/982C9FEADAF7B242C5069B8F390784 BF/30",* "figureurl_1":"/qzapp/101207268/982C9FEADAF7B242C5069B8F390784 BF/50",* "figureurl_2":"/qzapp/101207268/982C9FEADAF7B242C5069B8F390784 BF/100",* "figureurl_qq_1":"/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/4 0",* "figureurl_qq_2":"/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/1 00",* "is_yellow_vip": "0",* "vip": "0",* "yellow_vip_level": "0",* "level": "0",* "is_yellow_year_vip": "0"* }* </pre>** @param accessToken* @return*/public static QQUserInfo getUserInfo(String accessToken, String openid) {if (StringUtils.isEmpty(accessToken) ||StringUtils.isEmpty(openid)) {return null;}String url = String.format(URL_GET_USERINFO, accessToken, appId, openid);String resultString = DefaultHttp.get(url, ACCESS_TIMEOUT, GlobalConstants.UTF_8);Logger.debug("[sso-qq]get userinfo. use url '%s'", url);QQUserInfo userinfo = JsonUtil.fromJson(resultString, QQUserInfo.class);if (userinfo == null || !userinfo.hasGot()) {Logger.debug("[sso-qq]get userinfo failed, with result of '%s'", resultString);return null;}Logger.debug("[sso-qq]get userinfo success, with result of '%s'", resultString);return userinfo;}。
web实现QQ第三⽅登录应⽤场景web应⽤通过QQ登录授权实现第三⽅登录。
操作步骤1 注册成为QQ互联平台开发者,2 准备⼀个可访问的域名,如3 创建⽹页应⽤,配置必要信息,其中包括域名以及回调地址;其中域名需要验证,需确保对域名主机有⾜够的控制权限4 获取应⽤appID、appKey进⾏开发登录流程开发平台的登录授权采取oauth2.0机制,这也是⽬前⼏乎所有互联⽹开放平台所采取的⽅式。
需更多了解oauth2.0可参考阮⽼师的⽂章:实现⽅式client-side流程:前端页⾯通过Implict⽅式登录授权 -> 回调获得accessToken -> 获取openid -> 同步⽤户信息并登录为了保证数据安全,在获取⽤户信息并登录这⼀步必须由服务端实现。
这种⽅式的开发相对便捷,也是后⾯的实战案例将要采取的⽅式。
server-side流程:由server端页⾯跳转到登录授权页⾯(Authorization code⽅式) -> 回调获得code -> 置换accessToken -> 获取openid -> 同步⽤户信息并登录可参考:SDK使⽤JSSDK 可快捷实现前端登录授权的功能,可⾃定制登录按钮使⽤⽂档:缺点:存在浏览器兼容风险,此外登录按钮UI的定制也存在受限JavaSDK 屏蔽了oauth授权的复杂度,⽅便后端实现授权及api操作缺点:增加依赖jar包,项⽬容易变得臃肿,尤其是当前项⽬已经存在oauth功能实现时可不必采⽤。
案例实战功能描述clientside + server-side 通过QQ⽹页授权登录,并获取⽤户信息1 本地开发环境准备修改hosts⽂件将映射到127.0.0.1;本地服务器以80端⼝启动, windows下可能会出现80端⼝被系统进程占⽤的情况,解决⽅法可参考本地服务器启动后,以的域名进⾏访问,在QQ登录授权时可通过域名验证这⼀步2 登录跳转页⾯<html><head><title>QQ登录跳转</title><script src="/js/jquery/1.7.2/jquery.min.js" type="text/javascript"></script><script type="text/javascript">//切割字符串转换参数表function toParamMap(str){var map = {};var segs = str.split("&");for(var i in segs){var seg = segs[i];var idx = seg.indexOf('=');if(idx < 0){continue;}var name = seg.substring(0, idx);var value = seg.substring(idx+1);map[name] = value;}return map;}//隐式获取url响应内容(JSONP)function openImplict(url){var script = document.createElement('script');script.src = url;document.body.appendChild(script);}//获得openid的回调function callback(obj){var openid = obj.openid;$("#openid").text(openid);//跳转服务端登录urlvar resulturl = "@{openapi.QQs.login_result()}";var accessToken = $("#accessToken").text();//向服务端传输access_token及openid参数document.location.href=resulturl + "?access_token=" + accessToken + "&openid=" + openid;}</script></head><body><p>AccessToken:<span id="accessToken"></span>--ExpireIn<span id="expire"></span></p><p>OpenID:<span id="openid"></span></p><!-- 执⾏脚本 --><script type="text/javascript">//应⽤的APPIDvar appID = "101207268";//登录授权后的回调地址,设置为当前urlvar redirectURI = "@@{openapi.QQs.login()}";//初始构造请求if (window.location.hash.length == 0){var path = 'https:///oauth2.0/authorize?';var queryParams = ['client_id=' + appID,'redirect_uri=' + redirectURI,'scope=' + 'get_user_info,list_album,upload_pic,add_feeds,do_like','response_type=token'];var query = queryParams.join('&');var url = path + query;window.location.href= url;}//在成功授权后回调时location.hash将带有access_token信息,开始获取openidelse{//获取access tokenvar accessToken = window.location.hash.substring(1);var map = toParamMap(accessToken);//记录accessToken$("#accessToken").text(map.access_token);$("#expire").text(map.expires_in);//使⽤Access Token来获取⽤户的OpenIDvar path = "https:///oauth2.0/me?";var queryParams = ['access_token='+map.access_token, 'callback=callback'];var query = queryParams.join('&');var url = path + query;openImplict(url);}</script></body></html>功能描述页⾯在第⼀次打开时跳转到QQ登录授权页⾯;授权成功之后回到当前页⾯通过url参数(hash串)获得accessToken;此后可通过jsonp⽅式获取⽤户的openid,url如:https:///oauth2.0/me?access_token=YOUR_ACCESS_TOKEN获取到⽤户OpenID,返回包如下(JSONP⽅式获取):callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} )将access_token及openid传到服务端进⾏处理3 server端获取⽤户信息接收openid的页⾯⽅法/*** 登录结果** @param access_token* @param openid*/public static void login_result(String access_token, String openid) {//调⽤api获取qq⽤户信息QQUserInfo user = QQApi.getUserInfo(access_token, openid);//此时若取得user信息,则可以进⾏保存,并执⾏⽤户登录操作....//登录成功后跳转redirect(xxx);}QQApi的实现/*** QQ互联API** <pre>* 登录流程:** 1 前端跳转qq授权页⾯* 2 js获得access_token* 3 通过jsonp⽅式获得openid* 4 server端根据上传的access_token及openid获取⽤户信息,如昵称、头像** 参考⽂档:* /%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_client-side#Step2.EF.BC.9A.E8.8E.B7.E5.8F.96AccessToken * </pre>** @author xxx* @createDate 2015年3⽉10⽇**/public class QQApi {public static String appId = "xxx";public static String appSecret = "xxx";public static String baseUrl = "https://";protected static final String URL_GET_USERINFO = baseUrl+ "/user/get_user_info?access_token=%s&oauth_consumer_key=%s&openid=%s";protected static final long ACCESS_TIMEOUT = 15;protected static final String DEF_APP_TOKEN_EXPIRE = "3h";/*** 获取⽤户信息** <pre>* /get_user_info*** 调⽤地址:* https:///user/get_user_info* 参数* access_token=*************&* oauth_consumer_key=12345&* openid** 返回结果如下:* {* "ret": 0,* "msg": "",* "is_lost": 0,* "nickname": "⼩吞",* "gender": "⼥",* "province": "⼴东",* "city": "⼴州",* "year": "1993",* "figureurl": "/qzapp/101207268/982C9FEADAF7B242C5069B8F390784BF/30",* "figureurl_1": "/qzapp/101207268/982C9FEADAF7B242C5069B8F390784BF/50",* "figureurl_2": "/qzapp/101207268/982C9FEADAF7B242C5069B8F390784BF/100",* "figureurl_qq_1": "/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/40",* "figureurl_qq_2": "/qqapp/101207268/982C9FEADAF7B242C5069B8F390784BF/100",* "is_yellow_vip": "0",* "vip": "0",* "yellow_vip_level": "0",* "level": "0",* "is_yellow_year_vip": "0"* }* </pre>** @param accessToken* @return*/public static QQUserInfo getUserInfo(String accessToken, String openid) {if (StringUtils.isEmpty(accessToken) || StringUtils.isEmpty(openid)) {return null;}String url = String.format(URL_GET_USERINFO, accessToken, appId, openid);String resultString = DefaultHttp.get(url, ACCESS_TIMEOUT, GlobalConstants.UTF_8);Logger.debug("[sso-qq]get userinfo. use url '%s'", url);QQUserInfo userinfo = JsonUtil.fromJson(resultString, QQUserInfo.class);if (userinfo == null || !userinfo.hasGot()) {Logger.debug("[sso-qq]get userinfo failed, with result of '%s'", resultString);return null;}Logger.debug("[sso-qq]get userinfo success, with result of '%s'", resultString);return userinfo;}常见问题⽹页跳转提⽰ "redirect_uri_mismatch"通常是应⽤配置中的域名与当前开发服务器访问地址不⼀致导致,参照案例中的本地开发环境准备⼩节api调⽤返回错误查看返回的ret字段,对于⾮0值的ret则表⽰异常结果,可通过以下地址查询错误原因:接⼝调⽤过于频繁或超过限制应⽤系统可做好access_token的存储,此外对于⽤户数据(昵称、头像)也做好缓存或持久化,以减少接⼝的调⽤频度。
登录QQ网站,无需帐号及密码
雨中飞
【期刊名称】《网友世界》
【年(卷),期】2010(000)024
【摘要】在QQ空间中摘菜斗地主,在QQ邮箱中收到电子邮件,想必这是很多拥有0Q帐号的用户每天在网上必做的事情。
以往我们登最QQ空间或QQ邮箱,一般都是点击QQ面板上的相应功能图标直接进入。
【总页数】1页(P57-57)
【作者】雨中飞
【作者单位】不详
【正文语种】中文
【中图分类】TP393
【相关文献】
1.轻松清除QQ登录框中的帐号记录 [J], 王道才
2.无需账户密码照样登录ChinaRen网站 [J], 陈艳华
3.登录论坛何需注册“绕”过帐号密码就行 [J], 王彦博
4.帐号密码一次存入所有登录只需一键 [J], 张莉
5.用QQ帐号登录搜狐视频 [J], 王志军
因版权原因,仅展示原文概要,查看原文内容请购买。
网页qq登陆_webqq3.0登陆_网页QQ登录网址_qq在线登陆_腾讯网页webqq登陆_
发布时间:2012-4-9
网页qq登陆_webqq3.0登陆_网页QQ登录网址_qq在线登陆_腾讯网页QQ登陆_webqq 登陆
webqq字面的意思就是网页版的QQ,和我们通常使用的PC客户端的QQ不一样,因为好多公司都是不允许自己安装软件的,所以可能电脑上都没有安装QQ客户端,那么webQQ 的出现,正是弥补了这一个缺陷,使得Q迷们只要有网络就能够上QQ。
经过几年的发展,现在已经是webQQ3.0时代了,并且加上了Q+强大的桌面功能。
前几天听朋友说想做一个像Webqq直接登录窗口那样的软件,软件核心就是能够存储个人电脑里的一些文件等,方便外出时候备用,即使是在网吧也可以感受到在用自己电脑,听起来确实不错。
其实好早就知道Webqq直接登录了,在3Q大战时候应该好多人在用吧,只是后来腾讯把Webqq直接登录也直接关闭了,太狠了。
好了,言归正传,Webqq直接登录今天七七也试了一下,确实不错的说。
如果没有浏览器框起来,直接如壁纸一般(做白日梦呢),相信很多人会用吧。
什么是WebQQ?
WEBQQ是腾讯公司推出的使用网页方式上QQ的服务,特点是无需下载和安装QQ软件,只要能打开WEBQQ的网站()就可以登录QQ与好友保持联系。
什么是WebQQ2.0?
WebQQ3.0是WebQQ2.0的升级版,是以个人为中心的互联网平台,新一代网络生活起点。
WebQQ3.0着重强调自定制的桌面化体验,一站式服务的理念,以更炫的形式打造更贴心的服务。
WebQQ3.0网址:/。
WEBQQ有些什么功能?
1、使用QQ号码和密码登录QQ
2、设置自己的基本状态:在线、离开、隐身、离线
3、查看好友分组及各好友的状态
4、支持显示好友的备注名称和自定义头像
5、可使用文本及系统表情与好友进行一对一聊天
6、查看群列表
7、可使用文本及系统表情发起或参与群聊(暂不支持群名片的显示,将显示群成员的QQ 昵称)
8、查收未读邮件和离线消息
9、查看好友Qzone和个性签名的最近更新情况
10、更改自己的个性签名
11、查看好友收到的印象评价
12、快速搜索好友。
webqq字面的意思就是网页版的QQ,和我们通常使用的PC客户端的QQ不一样,因为好多公司都是不允许自己安装软件的,所以可能电脑上都没有安装QQ客户端,那么webQQ 的出现,正是弥补了这一个缺陷,使得Q迷们只要有网络就能够上QQ。
经过几年的发展,
现在已经是webQQ3.0时代了,并且加上了Q+强大的桌面功能。
工具/原料
•带网络的电脑一台
在线webQQ 3
1. 在浏览器地址栏输入如下网址,qq头像就能够登录到webQQ的首页
2. 打开首页后界面如下,因为整合了Q+,界面十分的华丽,但是载入速度不是很理想,电脑配置低的话可能会有些卡。
3. 点击左侧侧边栏上的QQ图标,弹出登录界面,和我们客户段的QQ差不多,我们输入QQ号码和密码,还可以设置登录状态,点击蓝色的登录按键登录
4. 登录后在右侧出现QQ界面如下,和我们平时用的客户端也差不多,不过界面比较清爽同样有群和最近联系人分组
5. 打开一个好友,看看聊天界面如下视频、文件传送、表情、抖动、发图片、截图功能都有,能够满足我们平时的需要了。
6. 如果要关闭QQ,那么点击主界面右上角的X,弹出确认对话框确认就可以了。
在线webQQ mini
1. 如果我们嫌Q+web 的界面过于华丽,加载速度慢,那么我们可以选择登录
webQQ mini,在地址栏中输入如下地址,就可以访问。
2. 登录界面如下,和Q+web 略有不同
3. 我们输入QQ号码和密码,设置好登录状态后点击“登录”
4. 登录进去后,界面很大,建议大家把浏览器拉小,好友界面如下
5. 点击上面的群分组,界面如下
6. 点击齿轮装图标,设置界面如下,可以设置显示文字的大小
7. 回到好友界面,我们点击一个好友,看一下聊天界面,很简洁,只有一个输入框和显示对话的框
8. 对话框中的显示对话如下如果要退出的话,在设置中可以退出,或者直接关闭webQQ mini的网页即可。
客户端WebQQ 3
1. webQQ也有客户端的,不过是基于adobe air基础上的,如果要安装客户端的话,要先安装Adobe AIR 组件,然后才能安装webQQ的客户端,安装界面如下
2. 运行以后,界面和在线的webQQ基本一样,也是那么华丽的界面
3. 点击左侧侧边栏上的QQ图标启动QQ 界面和在线webQQ一样样的,填写好号码和密码,设置好登录状态,点击蓝色的登录即可。
4. 登录上去以后,右侧出现悬浮的主界面窗口
5. 分组也和PC客户端的差不多,我们点击一个好友,看一下聊天界面
6. 界面上基本功能都有,点击QQ表情,看了一下和PC客户端的表情是一致的
7. 再测试一下截图工具,随手在桌面上截一个图
8. 发送给好友后会在下面显示“提示:此用户正在使用Q+web”如果要退出的话直接关闭主界面就可以了。
好了,这里给大家介绍了三种不同的webQQ的登录方式,希望对大家有所帮助。
注意事项
•客户端Q+web使用的时候发现占用内存比较大,如果小内存的用户不推荐使用。
网页qq登陆_webqq3.0登陆_网页QQ登录网址_qq在线登陆_腾讯网页webqq登陆_相关内容
∙2011-4-12webQQ为什么一登陆直接关机?
∙2012-2-12用WebQQ在线登陆是否计算会员加速升级?
∙2011-11-19webQQ怎么登陆不上,老是提示账号或密码错误???
∙2011-8-17为什么webqq只能登陆一条
∙2011-1-11webqq如何登陆多个号码?
来源" /gexing/252.html。