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差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...
随机推荐
- awk 反过滤不想要的列 和循环列
[root@elk_m ~]# awk '{print $0}' install.log.syslog |head -1 <86>Feb 29 02:58:28 groupadd[1598 ...
- Windows server 2008 R2搭建主域控制器 + 辅域控制器
一:实验模拟环境: Zhuyu公司是一个小公司,随着公司状大,公司越来越重视信息化建设,公司考虑到计算机用户权限集中管理及共享资源同步管理, 需要架设一套AD域控服务器,考虑到成本和日后管理问题,计划 ...
- svn更新报错:svn unable to connect to a repository at url
出现错误:unable to connect to a repository at url 解决办法1. 右键点击本地副本,TortoiseSVN -> Settings -> Saved ...
- IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
当前我的idea 版本是14.1.4. 1,)SVN Server下载与安装(https://www.visualsvn.com/server/): 因为我开发机是x64的,所以我优先下载 x64的 ...
- Chart 绘制,自带动画效果
package com.example.canvasdemo; import android.annotation.SuppressLint; import android.content.Conte ...
- this 的工作原理
JavaScript 有一套完全不同于其它语言的对 this 的处理机制. 在五种不同的情况下 ,this 指向的各不相同. 全局范围内 this; 当在全部范围内使用 this,它将会指向全局对象. ...
- paper 113:Bhattacharyya distance
在统计理论中,Bhattacharyya距离用来度量两个离散或连续概率分布的相似性.它与Bhattacharyya系数(Bhattacharyya coefficient)高度相关,后者是用来度量两个 ...
- 夺命雷公狗-----React---11--添加css样式的方法
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- Safari中的new Date()格式化坑
今天在测试的时候发现,在Chrome中的如下代码: new Date("2014-03-09"); 在Safari中报错invalid date.经过查阅资料找到类似的问答: st ...
- Grunt一辈子的好基友:yeoman
yeoman是什么 yeoman主要包含了三个工具:yo.grunt.bower.我们先看下这三个工具分别是做什么的: yo:脚手架工具,主要作用是创建项目骨架(跟grunt-init有点像). gr ...