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差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...
随机推荐
- C++ Primer Pluse_7_课后题
#include <iostream> using namespace std; double Sum2(double x, double y) { double sum = 0; if ...
- C语言 ---- 数组 iOS学习-----细碎知识点总结
#pragma mark - 数组:用来存放同一数据类型的数据 // 数组的定义:类型说明符 数组名[常量表达式] = {值1, 值2, 值3...}; // 定义一个float类型的数组,用来 ...
- [SLAM]Karto SLAM算法学习(草稿)
Karto_slam算法是一个Graph based SLAM算法.包括前端和后端.关于代码要分成两块内容来看. 一类是OpenKarto项目,是最初的开源代码,包括算法的核心内容: https:// ...
- 会员管理系统全部源代码(C#+EF+SQLite+Winforms实现)
会员管理系统全部源代码,VS2010开发,使用Ado.net实体框架EF,简化数据库访问层,并能方便的移植到其他数据库.利用数据绑定减少编码量,提高程序的可维护性和可读性.使用Winfoms方便快速界 ...
- OWASP WEB会话管理备忘单 阅读笔记
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Session_ID_Properties 会话简介 HTTP是一种无状态 ...
- AndroidStudio第一个项目HelloWorld
实验内容 在Android Studio中创建项目 创建并启动Android模拟器 项目的编译和运行 实验要求 在安装好的AndroidStudio上建立第一个工程 创建并启动Android模拟器 编 ...
- spring设置webAppRootKey
今天一个同事来问webAppRootKey 在哪设置的 <context-param> <param-name>webAppRootKey</param-name> ...
- NULL对反连接的影响
测试准备: create table t1(col1 number,col2 varchar2(1)); create table t2(col2 varchar2(1),col3 varchar2( ...
- JDBC的增删改写成一个方法,调用一个工具类
package com.hx.jdbc.connection; import java.sql.Connection; import java.sql.Statement; import com.my ...
- win2003超过最大连接数
远程连接强制登陆: 命令:mstsc /v:IP /admin|console 例如:mstsc /v:123.456.789.0 /console 或mstsc /v:123.456.789.0 / ...