日常API之QQ登录
Posted TwilightLemon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日常API之QQ登录相关的知识,希望对你有一定的参考价值。
这次的QQ登录我研究了好久惹,今天终于可以和大家分享啦!
大家都知道,QQ登录有很多方法,例如使用账号密码登录,手机版企鹅扫码登录等等(这些方法只能验证QQ是否成功登录,并没有聊天等功能)
首先就来使用账号密码登录吧(略简单)
一、准备工作
我们需要一只WebBrowser和登录API http://ui.ptlogin2.qq.com/cgi-bin/login?appid=1006102&s_url=http://id.qq.com/index.html&hide_close_icon=1
此外,还需要用于解析数据的Newtonsoft.Json
这其实是QQ中心的登录界面,我们需要使用WebBrowser进行模拟登录,也就是自动填表
界面设计大概是酱紫(略丑)
二、编码工作
首先实例化一只WebBrowser,然后将他转到登录界面(如没有WebBrowser请引用程序集System.Windows.Forms)
1 System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser(); 2 wb.Navigate("http://ui.ptlogin2.qq.com/cgi-bin/login?appid=1006102&s_url=http://id.qq.com/index.html&hide_close_icon=1");
接下来就可以填表单啦
1 System.Windows.Forms.HtmlDocument doc = wb.Document; 2 doc.GetElementById("switcher_plogin").InvokeMember("click"); 3 await Task.Delay(200); 4 doc.GetElementById("u").InnerText = "QQ"; 5 await Task.Delay(200); 6 doc.GetElementById("p").InnerText = "Password";7 await Task.Delay(200); 8 doc.GetElementById("login_button").InvokeMember("click");
再此之前需要注册Navigated事件,以在登录成功时抓取数据
1 if (wb.DocumentTitle == "我的QQ中心") 2 { 3 var qq = Text(wb.Document.Cookie, "uin=o", ";", 0);//获取QQ号 4 var sl = Text(await Uuuhh.GetWebAsync("http://r.pengyou.com/fcg-bin/cgi_get_portrait.fcg?uins=" + qq, Encoding.Default), "portraitCallBack(", ")", 0);//获取QQ名称 5 JObject o = JObject.Parse(sl); 6 var image=$"http://q2.qlogo.cn/headimg_dl?bs=qq&dst_uin={qq}&spec=100";//获取QQ头像 7 var qqname = o[qq][6].ToString();//QQ名称 8 }
这样就完成了账号密码的登录
三、运行测试
运行成功!o(* ̄▽ ̄*)ブ
源码下载:http://git.oschina.net/TwilightLemon/Updata/raw/master/QQLogin.zip
本次教程到这里就结束啦,希望大家多多关注我哦!o(* ̄▽ ̄*)ブ
以上是关于日常API之QQ登录的主要内容,如果未能解决你的问题,请参考以下文章