链接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授权登录的更多相关文章

  1. 在自己的网站上实现QQ授权登录

    最近在实现QQ授权登录,现将我的实现过程以及我的理解整理如下.以下所述如有不对之处,请指正. 官方提供的SDK有:JS,PHP,Java.我的网站使用Scala+Play搭建的,所以只能用JS SDk ...

  2. Android之QQ授权登录获取用户信息

    有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...

  3. iOS 基于第三方QQ授权登录

    基于iOS实现APP的第三方QQ登陆.接入第三方SDK时的一个主要的步骤: 1,找到相关的开放平台.QQ互联平台,http://connect.qq.com/: 2,注冊成功后创建自己的APP.填写一 ...

  4. ios授权登录过程中一直提示“没有安装qq”

    遇到问题:http://www.cocoachina.com/ask/questions/show/107029 之前都登录都很正常,这两天突然出现这个问题,没有安装qq软件的iphone手机上登录的 ...

  5. C# winform C/S WebBrowser qq第三方授权登录

    qq的授权登录,跟微信相似,不同的地方是: 1 申请appid与appkey的时候,注意填写回调地址. 2 这里可以在WebBrowser的是Navigated事件中直接得到Access Token, ...

  6. QQ第三方授权登录OAuth2.0实现(Java)

    准备材料 1.已经备案好的域名 2.服务器(域名和服务器为统一主体或域名已接入服务器) 3.QQ号 4.开发流程:https://wiki.connect.qq.com/%E5%87%86%E5%A4 ...

  7. OAuth授权登录

    一.写在前面 日常生活中,我们经常看到到一个网站时,需要登录的时候,都提供了第三方的登录,也就是说你可以使用你的微信,QQ,微博等账号进行授权登录.那么这个认证登录的东西到底是什么呢? 微信授权登录页 ...

  8. 微信和QQ网页授权登录

    一:微信授权 //用户授权 public function is_weixin(){ $url = "https://open.weixin.qq.com/connect/oauth2/au ...

  9. 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析

    前言 Swift 语言,怎么说呢,有一种先接受后排斥.又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...

随机推荐

  1. iOS:高德地图的使用

    本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示.地图的绘制.地图的定位.地图的POI数据检索.地图的线路规划.地图导航等下载地址如下:https://github.com/xiayua ...

  2. java netty之ServerBootstrap的启动

    通过前面的几篇文章,对整个netty部分的架构已经运行原理都有了一定的了解,那么这篇文章来分析一个经常用到的类:ServerBootstrap,一般对于服务器端的编程它用到的都还算是比较的多..看一看 ...

  3. 拼linq 时网上整理的一个类

    public static class DynamicLinqExpressions { public static Expression<Func<T, bool>> Tru ...

  4. -Xmx 和 –Xms 设置最大堆和最小堆

    C:\Java\jre1.6.0\bin\javaw.exe 按照上面所说的,最后参数在eclipse.ini中可以写成这个样子: -vmargs     -Xms128M     -Xmx512M ...

  5. svn提交时强制添加注释

    1,找到Repositories 文件夹 2,在Repositories 中找到对应的工程, 3,在工程下找到hooks文件夹 4.在hooks文件夹下添加 :pre-commit.bat文件;文件内 ...

  6. 【转】PowerShell入门(一):PowerShell能干什么?

    转至:http://www.cnblogs.com/ceachy/archive/2013/01/30/WhatCanPowerShellDo.html PowerShell能干什么呢?就像序言中提到 ...

  7. tcp粘包,udp丢包

    TCP是面向流的, 流, 要说明就像河水一样, 只要有水, 就会一直流向低处, 不会间断. TCP为了提高传输效率, 发送数据的时候, 并不是直接发送数据到网路, 而是先暂存到系统缓冲, 超过时间或者 ...

  8. Ubuntu16.04搭建LAMP架构服务器

     安装Apache: weirubo@weirubo-VirtualBox:~$ sudo apt-get install apache2 查看Apache版本: weirubo@weirubo-Vi ...

  9. android音乐播放器(Service+ContentProvider+Broadcast+Activity四大组件完成)

    1.获取音乐 1-1:获取手机中的音乐(用ContentProvider内容提供者来完成): package com.firefly.util; import java.util.ArrayList; ...

  10. 数据库设计 Assignment 02

    需求 1.0 请你试分析一下老师(教职工号,老师姓名,年龄),学生(学号,姓名,年龄),课程(课程号,课程名称,开课时间,上课地点)之间的关系, 注:多个老师可以同时教一门课 尝试画出该模型的E-R图 ...