这两天在做网站第三方登录,总结一下QQ登录吧,支付宝就不用了(下载dome把ID什么的换一换就基本可以了。),本文主要说的是代码的实现方式,逻辑部分主要还是根据帮助文档来的。不懂的同学可以先看看文档。

直接上代码吧:

        string client_id = "分配的APP ID";
string appid = " 分配的 APP KEY";
string Return_url = "返回处理的url";
public string Authorize()
{
string state = new Random().Next(, ).ToString();//随机数
HttpHelper http = new HttpHelper();
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);
string str="<script> location.href='" + url + "'</script>";
return str; }

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

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

效果:

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

        public User_info Back_User(string code)
{
string state = new Random().Next(, ).ToString();//随机数
User_info ui = new User_info();
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);
string uu = HttpHelper.HtmlFromUrlGet(url);//处理http请求帮助类
string code1 = uu.Split('&')[].Split('=')[].ToString();//获得access_token //根基access_token获取用户唯一OpenID
string url_me = string.Format("https://graph.qq.com/oauth2.0/me?access_token={0}" , code1);
string callback = HttpHelper.HtmlFromUrlGet(url_me);//这里获取的
callback = callback.Substring(callback.IndexOf('(') + , (callback.IndexOf(')') - callback.IndexOf('(') - )).Trim();
// dynamic jsonP = JValue.Parse(callback); //这里我用的是一个序列化类库 Newtonsoft.Json.dll 6.0.4版本无奈公司版本过低 只能用4.0的版本 建议使用6.0.4版本
a jsonP = JsonConvert.DeserializeObject<a>(callback);//Newtonsoft.Json.dll 4.0或4.5版本
string OpenID = jsonP.openid;//获取用户唯一的OpenID //根据OpenID获取用户信息 可以显示更多 用的就几个 需要的可以自己在下面加
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);
string user = HttpHelper.HtmlFromUrlGet(getinfo);
b info = JsonConvert.DeserializeObject<b>(user);
ui.Name = info.nickname;
ui.OpenID = OpenID;
ui.img_qq100 = info.figureurl_qq_1;
ui.img_qq50 = info.figureurl_qq_2;
ui.city = info.city;
ui.year = info.year;
ui.Type = ;
return ui; }

点击图像时跳转到指定的回调地址,并在redirect_uri地址后带上Authorization Code;

                  User_info ui = new User_info();
var verifier = Request.Params["code"]; //获取Authorization Code
ui = q.Back_User(verifier); 掉用方法并返回数据

再把返回的类贴出来吧

     public class User_info
{
public string OpenID { get; set; }//用户唯一appid public string Name { get; set; } public string img_qq50 { get; set; } //QQ图像40*40 public string img_qq100 { get; set; } public string city { get; set; } public int year { get; set; }
}
    public class a {

        public string client_id { get; set; }

        public string openid { get; set; }
}

基本就完了,代码就这么多了 凑合着用吧。

asp.net网站接入QQ登录的更多相关文章

  1. 网站接入QQ登录的两种方法

    第一种使用系统自带按钮登录,但是这样会弹出新窗口,不喜欢 //调用QC.Login方法,指定btnId参数将按钮绑定在容器节点中 QC.Login({ //btnId:插入按钮的节点id,必选 btn ...

  2. 网站集成QQ登录功能

    最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...

  3. 网站集成QQ登录功能(转)

    最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...

  4. 我用Django搭网站(2)-QQ登录

    接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权. 第一步:准备阶段 打开QQ互联,并登录你的QQ账号.再点击导航上的" ...

  5. 站点接入QQ登录

    首先引入授权js文件 <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/op ...

  6. 移动 App 接入 QQ 登录/分享 图文教程

    移动 App 接入 QQ 登录/分享 图文教程 这里先要提两个平台,腾讯开放平台和 QQ 互联平台: (一)腾讯开放平台 官网地址:https://open.tencent.com/ 介绍:腾讯开放平 ...

  7. 网站使用QQ登录问题小结

    关于网站如何使用QQ登陆这个问题就不多说了,很简单,登陆connect.qq.com找到相应的SDK,下载下来,里面会有demo,将相应的appid,appkey和回调地址callback改成自己的就 ...

  8. 接入qq登录功能出现的问题

    在调用qq授权的接口时,出现以上错误. 原因是: 打包的应用签名和第一次上传包的签名不一致造成的 解决方法: 第一种方法:用上次打包apk的keystore重新打包apk,使签名一致. 第二种方法:联 ...

  9. pc版qq登录及移动版qq登录的申请过程

    1.在哪里接入?    网站接入QQ登录在QQ互联(https://connect.qq.com)上创建:移动应用也可以在QQ互联(https://connect.qq.com)上创建,但是不推荐如此 ...

随机推荐

  1. Python中暂未解决的问题

    编写一个复杂的计算器,可以在通过GUI输出出来.参考代码http://www.cnblogs.com/BeginMan/p/3216093.html shelve模块中open()函数调用文件文件的路 ...

  2. soapUI系列之—-01 介绍soapUI简介,groovy 简介

    1.soapui简介 SoapUI是一个自由和开放源码的跨平台功能测试解决方案.通过一个易于使用的图形界面和企业级功能,SoapUI让您轻松,快速创建和执行自动化功能.回归.合规和负载测试.在一个测试 ...

  3. ubuntu下spring环境搭建

    一.安装JDK 下载官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 部署: ...

  4. 8088汇编跳转和PSW状态字寄存器

    DDD 8088 汇编跳转 日期:2003年6月12日  出处:嬴政天下整理收藏  作者:看雪  人气: 8735 8088 汇编跳转 一.状态寄存器 PSW(Program Flag)程序状态字寄存 ...

  5. Swift入门(十)——循环引用、弱引用和无主引用

    近期看到swift里面不仅有循环引用和弱引用(weak),还加入了无主引用(unowned),于是写了一些demo,这里总结一下. 和OC一样.Swfit默认也是基于ARC进行内存管理的,因此尽管简单 ...

  6. qrcode.react和jquery.qrcode生成二维码

    qrcode.react 1.安装 npm install qrcode.react 2.用法(这里用的ant design) import React from 'react'; import QR ...

  7. 使用cloudflare加速你的网站隐藏你的网站IP

    前言 cloudflare 是一家国外的 CDN 加速服务商,还是很有名气的.提供免费和付费的加速和网站保护服务.以前推荐过的百度云加速的国外节点就是和 cloudflare 合作使用的 cloudf ...

  8. RDD基础

    RDD的两种操作 1.Tansformation(转化操作):返回值还是一个RDD 2.Action(行动操作):返回值不是一个RDD      第一种Transformation是返回一个新的RDD ...

  9. bzoj3195 [Jxoi2012]奇怪的道路——状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3195 看到数据范围就应该想到状压呢... 题解(原来是这样):https://www.cnb ...

  10. hdu3652(含有13且能被13整除的数)数位DP基础

    B-number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...