qq互联只需要备案即可申请,申请成功后可以到qq互联官网查看教程,本站开始想使用js的教程但是由于本站需要绑定本站的账号用js教程无法完成,所以使用原始的oauth2.0来完成。

申请qq互联接口

qq互联官网

申请的时候需要注意将申请的应用名称和备案域名的网站名称一致才能通过

开始编码实现

  1. 展示qq登录的按钮,可以到官网下载登录的logo。
  2. 将点击按钮后的链接跳到你申请的回掉页面。
  3. 回掉页面设计一般是绑定已有账号和绑定新账号其实就是登录和注册。
  4. 回掉页面展示效果(可自行设计)。
  5. 实现服务端的业务逻辑。

查阅相关案例都说qq登录无须绑定已有账号,这样失去了qq登录的用户体验,但是本人觉得还是有必要的,下次登录的话即可直接登录。

服务端代码

 public ActionResult QQReturn()
{
int qqid = 0;
string name = "", image = "",sex=""; #region 首次调用
if (string.IsNullOrEmpty(Request["code"]))
{
#region 获取code
string url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" + appid + "&redirect_uri=" + HttpUtility.UrlEncode("http://pqpqpq.cn/account/qqreturn") + "&state=loginsuccess&scope=get_user_info,get_info";
Response.Redirect(url);
#endregion
}
else
{
#region 获取access_token
if (Request["state"] == "loginsuccess")
{
string code = Request["code"];
string url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=" + appid + "&client_secret=" + appkey + "&code=" + code + "&redirect_uri=" + HttpUtility.UrlEncode("http://pqpqpq.cn/account/qqreturn"); string str = RequestType.HttpGet(url); if (!string.IsNullOrEmpty(str) && str.IndexOf('&') != -1)
{
if (!str.Contains("msg"))
{
string[] arr = str.Split('&');
string[] arr1 = new string[arr.Length];
for (int i = 0; i < arr.Length; i++)
{
arr1[i] = arr[i].Split('=')[1];
}
access_token = arr1[0];
refresh_token = arr1[2];
expires_in = arr1[1];
}
}
}
#endregion
}
#endregion string url1 = "https://graph.qq.com/oauth2.0/me?access_token=" + access_token; string str1 = RequestType.HttpGet(url1); if (!string.IsNullOrEmpty(str1))
{
str1 = str1.Replace("callback(", "").Replace(")", "").Replace(";", "");
}
//AddLog(str1);
AccessToken openid = JsonConvert.DeserializeObject<AccessToken>(str1); if (openid != null)
{
var isopenid = db.person_qq_login.Where(c => c.openid == openid.openid).FirstOrDefault();
if (isopenid == null)
{
#region 插入qq登录信息
string geturl = "https://graph.qq.com/user/get_user_info?access_token=" + access_token + "&oauth_consumer_key=" + appid + "&openid=" + openid.openid;
string userstr = RequestType.HttpGet(geturl);
AddLog(userstr);
UserInfo userdata = JsonConvert.DeserializeObject<UserInfo>(userstr); if (userdata.ret == 0)
{
person_qq_login qq = new person_qq_login();
qq.figureurl = userdata.figureurl;
qq.figureurl_1 = userdata.figureurl_1;
qq.figureurl_2 = userdata.figureurl_2;
qq.figureurl_qq_1 = userdata.figureurl_qq_1;
qq.figureurl_qq_2 = userdata.figureurl_qq_2;
qq.gender = userdata.gender;
qq.is_yellow_vip = userdata.is_yellow_vip;
qq.is_yellow_year_vip = userdata.is_yellow_year_vip;
qq.level = userdata.level;
qq.msg = userdata.msg;
qq.nickname = userdata.nickname;
qq.ret = userdata.ret;
qq.vip = userdata.vip;
qq.yellow_vip_level = userdata.yellow_vip_level;
qq.openid = openid.openid;
qq.addTime = DateTime.Now;
db.person_qq_login.Add(qq);
db.SaveChanges();
if (db.SaveChanges()>0)
{
qqid = qq.ID;
name = userdata.nickname;
image = userdata.figureurl_qq_2;
sex = userdata.gender;
}
}
#endregion
}
else
{
var isuser = db.person_user.Where(c => c.qqID == isopenid.ID).FirstOrDefault();
if (isuser == null)
{
qqid = isopenid.ID;
name = isopenid.nickname;
image = isopenid.figureurl_qq_2;
}
else
{
//记录session
Session["user_model"] = isuser;
return RedirectToAction("Index", "Center");
}
}
} ViewData["qqid"] = qqid.ToString();
ViewData["nickname"] = name;
ViewData["faceimage"] = image;
ViewData["sex"] = sex; return View();
}

.Net QQ互联教程的更多相关文章

  1. QQ互联登录以及非官方正版应用报100044错误

    QQ第三方登录的时候,显示非官方正版应用,报100044错误:坑1:我们在QQ互联注册成功后需要设置包名和签名,签名是通过官方提供的工具生成的.注意一点:这里的签名是需要由打包签名之后APK生成,我们 ...

  2. 解决qq互联回调地址错误redirect uri is illegal(100010)的方法,不同于网上大部分方法

    我是在用ecshop自己搭建的一个网店系统安装了第三方登录的插件,包括qq登录插件.网上大部分情况都是discuz论坛的这个回调地址出错及解决办法.所以在我出错的时候参考他们的办法并不管用.但是在后面 ...

  3. 【Discuz】关闭QQ互联插件提示信息:系统繁忙,请稍后再试

    版本:X3.2.20160601 提示信息 系统繁忙,请稍后再试 解决方案 Step1.删除QQ互联插件目录 网站的根目录\source\plugin\qqconnect Step2.上传原始QQ互联 ...

  4. QQ互联OAuth

    /** * QQ互联 oauth * @author dyllen * */ class Oauth { //取Authorization Code Url const PC_CODE_URL = ' ...

  5. QQ互联开发-01-开发者注册和网站应用申请

    首先需要申请网站应用 要想使用QQ互联,首先需要先注册一个开发者账号,使用QQ号码可以注册,注册后,就可以创建网站应用了: 通过下面地址:https://connect.qq.com/,我们去登录QQ ...

  6. PHP版QQ互联OAuth示例代码分享

    )   {     $ch = curl_init();     if(! $flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);     cu ...

  7. QQ互联登陆出现(1054) Unknown column “conuintoken” in “field list”

    在dz论坛中打开了QQ互联登录功能之后提示(1054) Unknown column conuintoken in field list 错误 我们看到sql 错误就是说没有conuintoken字了 ...

  8. QQ互联登录回调路径错误redirect uri is illegal(100010)

    QQ互联登录设置的路径设置

  9. QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码(转)

    OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2 ...

随机推荐

  1. Docker容器的基本了解和命令

    一.docker和虚拟机的对比 特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般几十个 更高效的利用系统资源 更快速 ...

  2. 解决Oracle数据库空间不足问题

    //查询表空间的大小以及文件路径地址select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space ...

  3. Cpython解释器下实现并发编程

    一 背景知识 二 python并发编程之多进程 三 python并发编程之多线程 四 python并发编程之协程 五 python并发编程之IO模型 六 补充:paramiko模块 七 作业 一 背景 ...

  4. 跳转Activity时清除当前Activity

    void GotoMainActivity(){ Intent intent = new Intent(ProductionInformationActivity.this, MainActivity ...

  5. SQL查询中连接--学习

    一.开头说 不出意外,还是先说下SQL中所有的联接类型: 内连接.外连接(左连接.右连接 .全连接).交叉连接 然后接下来就是依次学习下各种连接的使用效果 二.各种连接秀 首先准备两张表   学生表: ...

  6. 内网ssh穿透

    公司服务器没有公网IP,只有内网IP,利用自己的阿里云服务器(有公网ip)做ssh内网穿透,使得外网可访问.方法如下: 环境: 公司服务器和阿里云服务器均为 Ubuntu 操作系统, 需要修改阿里云服 ...

  7. typename的用法

    template <class T> void foo() { typename T::iterator * iter; } class ContainsAType{ public: cl ...

  8. 'BAPI_MESSAGE_GETDETAIL' 用法

    其中message class是在se91里创建的 call function 'BAPI_MESSAGE_GETDETAIL' exporting id         = msg_class “m ...

  9. selenium之 chromedriver与chrome版本映射表(更新至v2.46)

    chromedriver版本 支持的Chrome版本 v2.46 v71-73 v2.45 v70-72 v2.44 v69-71 v2.43 v69-71 v2.42 v68-70 v2.41 v6 ...

  10. 1. NES简介

    NES(Nintendo Entertainment System)简介 NES是北美地区对任天堂发行的第三代家用游戏机的简称. 1.CPU NES使用一颗理光[1]制造的8位2A03 NMOS处理器 ...