QQ授权登录
链接QQ:tencent://message/?uin=295611875&Site=hexun.com/ngdao&Menu=yes
这两天在做网站第三方登录,总结一下QQ登录吧,支付宝就不用了(下载dome把ID什么的换一换就基本可以了。),本文主要说的是代码的实现方式,逻辑部分主要还是根据帮助文档来的。不懂的同学可以先看看文档。 http://open.qq.com/
直接上代码吧:

1 string client_id = "分配的APP ID";
2 string appid = " 分配的 APP KEY";
3 string Return_url = "返回处理的url";
4 public string Authorize()
5 {
6 string state = new Random(100000).Next(99, 99999).ToString();//随机数
7 HttpHelper http = new HttpHelper();
8 string url = string.Format("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id={0}&redirect_uri={1}&state={2}", client_id, Return_url, state);
9 string str="<script> location.href='" + url + "'</script>";
10 return str;
11
12 }

点击事件直接调用Authorize()就可以了,我是直接用跳转链接处理的。

1 protected void Page_Load(object sender, EventArgs e)
2 {
3 QQ_Login q = new QQ_Login();
4 string url = q.Authorize();//这里调用
5 Response.Write(url);
6 }

效果:

点击图像,接着在,回调的url里面调用下面的方法,参数再往下看一点;

1 public User_info Back_User(string code)
2 {
3 string state = new Random(100000).Next(99, 99999).ToString();//随机数
4 User_info ui = new User_info();
5 string url = string.Format("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id={0}&client_secret={1}&code={2}&redirect_uri={3}&state={4}", client_id, appid, code, Return_url, state);
6 string uu = HttpHelper.HtmlFromUrlGet(url);//处理http请求帮助类
7 string code1 = uu.Split('&')[0].Split('=')[1].ToString();//获得access_token
8
9 //根基access_token获取用户唯一OpenID
10 string url_me = string.Format("https://graph.qq.com/oauth2.0/me?access_token={0}" , code1);
11 string callback = HttpHelper.HtmlFromUrlGet(url_me);//这里获取的
12 callback = callback.Substring(callback.IndexOf('(') + 1, (callback.IndexOf(')') - callback.IndexOf('(') - 1)).Trim();
13 // dynamic jsonP = JValue.Parse(callback); //这里我用的是一个序列化类库 Newtonsoft.Json.dll 6.0.4版本无奈公司版本过低 只能用4.0的版本 建议使用6.0.4版本
14 a jsonP = JsonConvert.DeserializeObject<a>(callback);//Newtonsoft.Json.dll 4.0或4.5版本
15 string OpenID = jsonP.openid;//获取用户唯一的OpenID
16
17 //根据OpenID获取用户信息 可以显示更多 用的就几个 需要的可以自己在下面加
18 string getinfo = string.Format("https://graph.qq.com/user/get_user_info?access_token={0}&oauth_consumer_key={1}&openid={2}", code1, client_id, OpenID);
19 string user = HttpHelper.HtmlFromUrlGet(getinfo);
20 b info = JsonConvert.DeserializeObject<b>(user);
21 ui.Name = info.nickname;
22 ui.OpenID = OpenID;
23 ui.img_qq100 = info.figureurl_qq_1;
24 ui.img_qq50 = info.figureurl_qq_2;
25 ui.city = info.city;
26 ui.year = info.year;
27 ui.Type = 1;
28 return ui;
29
30 }

点击图像时跳转到指定的回调地址,并在redirect_uri地址后带上Authorization Code;
1
2 User_info ui = new User_info();
3 var verifier = Request.Params["code"]; //获取Authorization Code
4 ui = q.Back_User(verifier); 掉用方法并返回数据
再把返回的类贴出来吧

1 public class User_info
2 {
3 public string OpenID { get; set; }//用户唯一appid
4
5 public string Name { get; set; }
6
7 public string img_qq50 { get; set; } //QQ图像40*40
8
9 public string img_qq100 { get; set; }
10
11 public string city { get; set; }
12
13 public int year { get; set; }
14 }


1 public class a {
2
3 public string client_id { get; set; }
4
5 public string openid { get; set; }
6 }

QQ授权登录的更多相关文章
- 在自己的网站上实现QQ授权登录
最近在实现QQ授权登录,现将我的实现过程以及我的理解整理如下.以下所述如有不对之处,请指正. 官方提供的SDK有:JS,PHP,Java.我的网站使用Scala+Play搭建的,所以只能用JS SDk ...
- Android之QQ授权登录获取用户信息
有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...
- iOS 基于第三方QQ授权登录
基于iOS实现APP的第三方QQ登陆.接入第三方SDK时的一个主要的步骤: 1,找到相关的开放平台.QQ互联平台,http://connect.qq.com/: 2,注冊成功后创建自己的APP.填写一 ...
- ios授权登录过程中一直提示“没有安装qq”
遇到问题:http://www.cocoachina.com/ask/questions/show/107029 之前都登录都很正常,这两天突然出现这个问题,没有安装qq软件的iphone手机上登录的 ...
- C# winform C/S WebBrowser qq第三方授权登录
qq的授权登录,跟微信相似,不同的地方是: 1 申请appid与appkey的时候,注意填写回调地址. 2 这里可以在WebBrowser的是Navigated事件中直接得到Access Token, ...
- QQ第三方授权登录OAuth2.0实现(Java)
准备材料 1.已经备案好的域名 2.服务器(域名和服务器为统一主体或域名已接入服务器) 3.QQ号 4.开发流程:https://wiki.connect.qq.com/%E5%87%86%E5%A4 ...
- OAuth授权登录
一.写在前面 日常生活中,我们经常看到到一个网站时,需要登录的时候,都提供了第三方的登录,也就是说你可以使用你的微信,QQ,微博等账号进行授权登录.那么这个认证登录的东西到底是什么呢? 微信授权登录页 ...
- 微信和QQ网页授权登录
一:微信授权 //用户授权 public function is_weixin(){ $url = "https://open.weixin.qq.com/connect/oauth2/au ...
- 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析
前言 Swift 语言,怎么说呢,有一种先接受后排斥.又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...
随机推荐
- zepto源码--核心方法6(显示隐藏)--学习笔记
在不引入zepto插件模块fx_metho其他ds的情况下,zepto默认的显示隐藏的函数只有show, hide, toggle,这里解释有个前提条件,就是没有引入zepto的fx_methods插 ...
- 菜菜CPP日记
分支预测建议: http://www.cppblog.com/mysileng/archive/2014/09/29/208454.html #ifndef likely #define likely ...
- mongoose升级后遇到的问题
由于想在mongoose中使用Q,所以将mongoose升级到了4.1.0,而线上mongoDB的版本是2.6.7,升级的时候,node-modules存在mongoose的残渣,所以调用 npm i ...
- 深入研究虚拟机之垃圾收集(GC)算法实现
一. What, Why 1. GC是什么?为什么需要GC GC,全写是Garbage Collection , 即垃圾回收.GC是一种自动内存管理机制.通常我们在需要时手动的分配 ...
- 将数据文件从普通文件系统移动到ASM
场景一:数据库可以关闭1.关闭并mount数据库 $ sqlplus '/as sysdba' SQL> shutdown immediate SQL> startup mount; 2. ...
- input内强制保留小数点后两位 位数不足时自动补0
input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead 在解决问题Underscores can only ...
- js方式找出数组中重复数最多的那个数,并返回该数以及重复次数
function findNum(a){ var result = [0,0]; for (var i = 0; i < a.length; i++) { for (var j = 0,coun ...
- mysql之各种命令总结
1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:2.创建一个数据库MYSQLDATAmysql> CREATE DATABASE MY ...
- 【实践】纯jquery实现图片滑动无缝轮播,带左右按钮及控制按钮
在此随笔之前,博主已经做过一次图片滑动轮播,如过你也有看过就会知道里面的效果在自动轮播的时候有一个不太美观的效果,就是当最后一张图片滑动切换到第一张图片的时候会看到一个快速向左滑动的效果,这是很不美观 ...