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. 工程启动没有报错,但是dubbo后台显示没有提供者,工程没有提供服务

    先说一下我遇到的问题:服务工程启动没有异常,消费者工程启动会出现很多nested(嵌套的)错误,但其根本错误是No provider available(缺少服务提供者).可是服务工程起来的时候明明没 ...

  2. Java框架spring 学习笔记(九):Spring的bean管理(@Required、@Component、@Autowired、@Resource注解)

    注解:代码里面特殊的标记,使用注解可以完成相关功能 注解写法:@注解名称(属性名.属性值) @Required 用在set方法上,一旦用了这个注解,那么容器在初始化bean的时候必须要进行set,也就 ...

  3. (纠错)JSP数据库判断是否存在

  4. RFID概述

    自动识别技术的本质在于利用被识别物理对象的一些具有辨识度的特征来对物理对象进行区分和识别.因此,这些具有辨识度的特征可以是物理对象自带的特征,如指纹,人脸,语言,视网膜,心跳等,也可以是通过第三方赋予 ...

  5. spring-framework源码编译及导入

    环境说明: 时间:2017-09-26 OS name: "mac os x", version: "10.12.4", arch: "x86_64& ...

  6. 19-07 【docker】随笔笔记

    小tips: 1,在nginx的镜像中,并未包含ping工具: 2,在busybox的镜像中,是包含ping工具和telnet工具的,所以如果想测试互通性,可以利用busybox来检查: 实验1:利用 ...

  7. Ubuntu ROS

    设置你的sources.list 将电脑设置为接受来自packages.ros.org的软件 sudo sh -c 'echo "deb http://packages.ros.org/ro ...

  8. Mybatis 接口代理的实现(BeanDefinitionRegistryPostProcessor+FactoryBean)

    相信在开发中,尤其是mybatis 配置操作中,我们只需要提供一个mapper 接口,然后注入到service 中,就可以进行调用. 按我们的一般逻辑来说,我们并没有进行接口的实现,应该会报空指针异常 ...

  9. xp密钥-资源分享

    xp-密钥:QC986-27D34-6M3TY-JJXP9-TBGMD ftp-资源地址: ftp://10.10.31.2/?tdsourcetag=s_pctim_aiomsg

  10. 制作docker基础镜像

    docker build -t tomcat:jre8-alpine . sudo docker tag 5a3 registry.cn-shenzhen.aliyuncs.com/ibase/tom ...