源码在这里:点击打开链接

这是我自己完成的QQ空间登录代码,只做到登录成功,返回你的微博Id为止。接下去要扩展功能很简单,你们自己看着办吧。

代码主要是包括通过Httpget(httpwebrequest方法)登录的,还包括了QQ密码的最新加密算法2014年)

代码有比较详细的注释

截图如下:

1.控制台版

2.桌面版

贴一点核心代码:(以下代码是控制台版的主要代码。完整源码链接已经提供了,要的赶紧去下,才五分,不贵。)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Drawing;
using System.Security.Cryptography;
using System.Net;namespace testWebRequest
{public class Program{public static String qq = "XXXXXX";  //填自己的QQ账号private static String password = "XXXXXX;"; //填自己的QQ密码static void Main(String[] args){QQLogin(qq, password);}public static void QQLogin(String QQ, String password){String pass = "";String responseData = "";//获取验证信息//验证信息格式为:ptui_checkVC('0','!MIW','\x00\x00\x00\x00\x9a\x65\x0f\xd7') //其中分为三部分,第一个值0或1判断是否需要图片验证码//                          第二个值是默认验证码,若不需要图片验证码,就用此验证码来提交//                          第三部分是所使用的QQ号码的16进制形式String forCheckUrl = "https://ssl.ptlogin2.qq.com/check?regmaster=&uin="+qq+"&appid=46000101&u1=http%3A%2F%2Ft.qq.com";RetData outcomeFromCheck = new RetData();CookieContainer cookieNull = new CookieContainer();HttpHelper helper = new HttpHelper();outcomeFromCheck = helper.GetHtml(forCheckUrl, cookieNull);String receiveFromCheck = outcomeFromCheck.str;Console.WriteLine("验证码信息:"+receiveFromCheck+"\n"); //打印获取的网页内容//将验证码信息的三部分存入数组int checkCodePosition = receiveFromCheck.IndexOf("(") + 1;String checkCode = receiveFromCheck.Substring(checkCodePosition, receiveFromCheck.LastIndexOf(")") - checkCodePosition);String[] checkNum = checkCode.Replace("'", "").Split(',');  //验证码数组if ("1".Equals(checkNum[0])) //判断是否需要图片验证码{String forImageUrl = "https://ssl.captcha.qq.com/getimage?uin=" + QQ + "&aid=46000101&cap_cd=" + checkNum[1];Stream receiveStream = helper.GetStream(forImageUrl, outcomeFromCheck.cookie);//将获取的图片验证码存入电脑System.Drawing.Image.FromStream(receiveStream).Save(@"d:/code.jpg");//Image img = Image.FromStream(receiveStream);Console.Write("请输入验证码:");responseData = Console.ReadLine(); //将读取到的图片验证码输入到responseData中}else //若不需图片验证码,验证码就等于checkNum[1]{responseData = checkNum[1];}//获取加密密码PasswordHelper helper2 = new PasswordHelper();pass = helper2.GetPassword(QQ, password, responseData);//Console.WriteLine(pass);/** *********************** 登录 *************************** */String forLoginUrl = "https://ssl.ptlogin2.qq.com/login?u=" + QQ + "&verifycode=" + responseData + "&p=" + pass + "&u1=http%3A%2F%2Ft.qq.com&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=4-13-1398237700223&aid=46000101&daid=6&";RetData outcomeFromLogin = new RetData();outcomeFromLogin = helper.GetHtml(forLoginUrl, outcomeFromCheck.cookie);String revFromLogin = outcomeFromLogin.str;Console.WriteLine("登录返回信息: "+revFromLogin); //打印登录后返回信息//至此登录成功//取出登陆成功后返回的ptsig,下一步要用int ptsigPosition = revFromLogin.IndexOf("ptsig=") + 6;String ptsig = revFromLogin.Substring(ptsigPosition, revFromLogin.IndexOf("&s_url") - ptsigPosition);//Console.WriteLine("ptsig= "+ptsig);//通过访问checkSig获取个人主页的地址,返回地址中有个人微博的IDString checkSigUrl = "http://ptlogin4.t.qq.com/check_sig?pttype=1&uin=" + qq + "&service=login&nodirect=0&ptsig=" + ptsig + "&s_url=http%3A%2F%2Ft.qq.com&f_url=&ptlang=2052&ptredirect=101&aid=46000101&daid=6&j_later=0&low_login_hour=0&regmaster=0&pt_login_type=1&pt_aid=0&pt_aaid=0&pt_light=0";RetData outcomeFromSig = new RetData();outcomeFromSig = helper.GetHtml(checkSigUrl, outcomeFromLogin.cookie); //其实checksig过程包含页面重定向,我这GetHtml中直接让它自动实现重定向了//Console.WriteLine(outcomeFromSig.redirectUrlString);//得到微博IDString IndexPageUrl = outcomeFromSig.redirectUrlString;String blogID = IndexPageUrl.Substring(IndexPageUrl.LastIndexOf("/") + 1, IndexPageUrl.Length - IndexPageUrl.LastIndexOf("/")-1);Console.WriteLine("你的微博ID:  "+blogID);//返回个人资料页RetData outcomeFromIndexPage = new RetData();outcomeFromIndexPage = helper.GetHtml(IndexPageUrl, outcomeFromSig.cookie);//将个人页面写到txt里StreamWriter swrite = new StreamWriter("E:/QQBlogIndexpage.txt", false, Encoding.UTF8);swrite.WriteLine(outcomeFromIndexPage.str);swrite.Close();swrite.Dispose();//遍历CookieContainer//GetCookieContent showCookies = new GetCookieContent();//showCookies.ShowAllCookies(outcomeFromLogin[0].cookie);}}public class RetData //网页请求返回对象{public string str;public CookieContainer cookie;public string redirectUrlString;public RetData(){ }public RetData(string st, CookieContainer coo, string urlstr){this.str = st;this.cookie = coo;this.redirectUrlString = urlstr;}} }

完整源码地址:

http://download.csdn.net/detail/lai444132348/7269149

下载只需五分,下完评论返6分,你还等什么,拿走不用谢。

C#实现腾讯微博登录相关推荐

  1. 腾讯空间、新浪微博、腾讯微博登录接口

    腾讯空间.新浪微博.腾讯微博登录接口的使用. 注意:在网站对接前,请先申请注册好您的QQ登录appid.新浪登录Appkey.腾讯微博appkey. 1.引用JS文件 <script src=& ...

  2. 腾讯空间、新浪微博、腾讯微博登录接口的使用

    腾讯空间.新浪微博.腾讯微博登录接口的使用. 注意:在网站对接前,请先申请注册好您的QQ登录appid.新浪登录Appkey.腾讯微博appkey. 1.引用JS文件 [html] view plai ...

  3. 分析腾讯微博登录过程

    一,腾讯网站登陆过程分析 腾讯网站包括qq.com为主域名的网站,包括t.qq.com,www.qq.com以及腾讯数不清的各个子域名,因为腾讯使用的sso登陆,所以登陆流程对于各个子域名都是一样的. ...

  4. android 腾讯微博登录小demo

    目前越来越多的app,都需要集成三方登录(腾讯微博.新浪微博.人人等等).这里分享一个简单的腾讯微博demo.废话不多说,三步走. 第一步注册一个账户,并创建一个应用.获取app ID与 app Ke ...

  5. 腾讯微博授权登陆超简单示例(源自官方Demo)

    本人初学乍练 有什么不合适的地方欢迎大家踊跃吐槽 首先参考官方API文档 了解腾讯微博Oauth2.0形式的授权过程 这次主要将的是(code模式)方式的鉴权 [url]http://wiki.ope ...

  6. 移动共享开发(二)各平台SSO(免登录)配置 微信和微信朋友圈、QQ、QQ空间、新浪微博、腾讯微博、人人

    SSO名词解释 : SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 例如用户已经登录新浪微博客户端,使用SSO授权 ...

  7. 新浪微博,腾讯微博,QQ号码 联合登录。。。完善中...

    新浪微博 技术接口地址:http://open.t.sina.com.cn/wiki/SDK 腾讯微博 技术接口地址:http://open.t.qq.com/open-js/doc/ QQ号码登录 ...

  8. 使用share SDK实现腾讯微博授权登录分享(1.x版本)

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 操作步骤: 1.在share官网注册应用生成AppKey并下载SDK     网址:http://www.sh ...

  9. 有奖试读 使用share SDK实现腾讯微博授权登录分享(1.x版本)

    操作步骤: 1.在share官网注册应用生成AppKey并下载SDK     网址:http://www.shareSDK.cn 2.在腾讯微博平台注册应用生成AppId和AppKey    网址:h ...

最新文章

  1. 设定自动获得DNS服务器地址
  2. 电脑音响怎么插_厦门靓车港丰田凯美瑞汽车音响改装德国HELIX汽车音响|凯美瑞|音响改装|汽车|内饰...
  3. 正在创建系统还原点_如何使Windows在启动时自动创建系统还原点
  4. 【ASP.NET】获取网站目录的方法
  5. [转帖]升级 Ubuntu,解决登录时提示有软件包可以更新的问题
  6. Mysql数据库drop表不用跑路,表空间传输助你恢复数据
  7. C++标准库::拾遗
  8. 内置函数——find
  9. WAVE-U-NET: A MULTI-SCALE NEURAL NETWORK FOR END-TO-END AUDIO SOURCE SEPARATION
  10. LwIP协议栈——网络接口管理
  11. SpringBoot生成二维码
  12. 图像处理中的深度学习技术
  13. MCS9865串口卡并口卡驱动
  14. c语言可以绘制中国地图源码,echarts画中国地图,省市区地图分享
  15. RabbitMQ之Channel
  16. flyme6 patchrom插桩从入门到放弃
  17. BigWorld—chunck系统
  18. 按键精灵按键助手x86x64内存插件(安卓内存插件)
  19. springmvc @RequestMapping
  20. 面向OLAP的列式存储DBMS-11-[ClickHouse]的常用字符串操作

热门文章

  1. 道可云VR全景说:VR样板间在智慧房产中的优势
  2. 小朱笔记之hadoop应用实战、源码分析-目录
  3. 第七章:小朱笔记hadoop之源码分析-hdfs分析 第四节:namenode-ReplicationMonitor
  4. DL-Paper精读:Training SDNNs with IHT
  5. Stream的特性、用法、stream().map().collect()用法
  6. nefu 169 步步惊心
  7. php9宫格抽奖程序_PHP抽奖算法程序代码分享
  8. java excel 字体大小_java操作Excel的poi的字体设置
  9. 解决火狐浏览器下载文件变为乱码
  10. 期货交易入门流程(期货交易入门书籍)