QQ第三方登录(PC + 手机)
一、申请APPID和APPKEY
登录QQ互联,登录地址:https://connect.qq.com/ ,登录===》创建应用
注意:1、手机网站和PC网站要分开创建两个应用,都是“网站应用”,只有APP才是手机应用
2、网站回调域 写你回调的地址,写错了没有关系,后面可以修改
3、这个申请得到唯一标识【OpenID】只对一个应用唯一,如果开发者有多个应用,需要申请Unionid,
Unionid申请方法:发送邮件到connect@qq.com,
邮件格式如下:
申请通过以后,得到APPID、APPKey。
二、开发:
1、HTML页面
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn" xml:lang="zh-cn">
<head>
<title>会员登录</title>
<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="你的APPID" charset="utf-8"></script>
</head>
<body>
<span>其它账号登录:</span>
<!--登录按钮-->
<span style=" margin-right:10px" id="qqLoginBtn"></span>
<script src="../JS/JQuery.js" type="text/javascript"></script>
<!--QQ登录-->
<script type="text/javascript">
$(function () {
QC.Login.signOut();
});
QC.Login({
btnId: "qqLoginBtn" //插入按钮的节点id
});
var paras = {};
//if (QC.Login.check()) {
QC.api("get_user_info", paras).success(function (s) {//成功回调
console.log("success",arguments);
//成功回调
QC.Login.getMe(function (openId, accessToken) {
console.log("getMe",arguments)
showBgProc(true, "正在登录,请稍候...");
$.post("../ajax.ashx?action=QQlogin&t=" + Math.random(), {
name: s.data.nickname, //昵称
gender: s.data.gender, //性别
province: s.data.province, //省
city: s.data.city, //市
year: s.data.year, //出生年
figureurl: s.data.figureurl_2, //头像
openid: openId,
otype: 1,
token: accessToken
}, function (msg) {
showBgProc(false);
if (gav(msg, "state") == "1") {
$a(s.data.nickname + "恭喜你,登录成功!");
location.href = "/user/"; //跳转到会员中心页
} else {
$a(gav(msg, "msg"));
}
});
});
})
.error(function (f) {//失败回调
alert("获取用户信息失败!");
})
.complete(function (c) {
//完成请求回调
});
//}
</script>
</body>
</html>
2、AJAX.ashx页面
/// <summary>
/// QQ快速登录
/// </summary>
private static void QQLogin()
{
//获取unionid
string token = HttpContext.Current.Request["token"];
string unid = "";
if (!string.IsNullOrEmpty(token))
{
string str = Get("https://graph.qq.com/oauth2.0/me?access_token=" + token + "&unionid=1");
if (!string.IsNullOrEmpty(str))
{
str = str.Replace("callback(", "").Replace(")", "").Replace(";","").Trim();
System.Collections.Hashtable ht = Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Hashtable>(str);
unid = ht["unionid"] as string;
//WriteString(str);
}
}
string ChnName = HttpContext.Current.Request.Form["name"];//昵称
string openid = HttpContext.Current.Request.Form["openid"];//其它用户信息略。。
if (!string.IsNullOrEmpty(unid)) openid = unid; //如果有unionid 就把unionid 作为唯一标识保存到数据库中
//先判断 openid 是否存在
//读取用户表,看数据库中是否有相应的信息
if (user_OBJ == null)
{
//如果不存在,先保存用户信息,再登录
//1.1 保存到自己的数据库表中
//1.2 登录代码,保存自己的cookie
}else{
//如果存在,直接登录
//1.1登录代码,保存自己的cookie
}
//返回结果内容
WriteXml(node, node2);
}
未完。。。。。。。
QQ第三方登录(PC + 手机)相关推荐
- 使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样
使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样 openid生成是根据应用的appid和QQ号的一些信息加密生成,对于一个appid和QQ号来说,openid是唯一 ...
- 微信第三方登录 -- (PC端+移动端)
微信第三方登录 -- (PC端+移动端) 一.前言 一. 什么是第三方登录 所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能.而这里的第三方平台,一般 ...
- java实现支付宝第三方登录_Java 实现QQ第三方登录(附赠:完整代码)
老铁,转发+关注+私信 获取完整代码 前言:很多时候我们都需要如下的第三方登录,用QQ帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户. 下面让我们来实现吧,可以参考官网文档,也可以看我下 ...
- python实现QQ第三方登录
应用接入前,首先需进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权.http://wiki.connect.qq.com/__trashed-2 QQ登录 ...
- QQ第三方登录的详细教程
这次说一下我自己第一次使用QQ第三方登录的过程 1 .我们开始需要在开发者网站上注册,http://open.qq.com/ 进入这个网站后点应用接入中的应用接入(因为那个按不动),开始注册,这个注册 ...
- 公司网站如何让用户使用QQ第三方登录
我们做了一个中农物联网系统,为了简化用户使用门槛,并保证用户资料安全,准备在自身的用户管理基础上加入第三方登录,主要是QQ登录.微信二维码扫描登录.手机微信登录等. QQ第三方登录,用的是QQ ...
- 腾讯QQ第三方登录2:原理与实现(OAuth2.0协议)
这一篇博客上接腾讯QQ第三方登录1:申请接入(OAuth2.0协议) 3. 执行过程 3.1 第三方登录图标的代码 <a href="<{:U('Login/login?type ...
- QQ第三方登录的过程
版权声明:允许转载,只要标注转载地址即可 这次说一下我自己第一次使用QQ第三方登录的过程 1 .我们开始需要在开发者网站上注册,http://open.qq.com/ 进入这个网站后点应用接入中的 ...
- Java 实现QQ第三方登录
前言:很多时候我们都需要如下的第三方登录,用QQ帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户. 下面让我们来实现吧,可以参考官网文档,也可以看我下面的操作说明 QQ第三方登录接入指 ...
- QQ第三方登录报错error=-1
qq 第三方登录报错error=-1 再次实例化qc类.
最新文章
- Xamarin.Forms单元控件Cell
- 机器学习中训练集、验证集和测试集的区别
- 部署yum仓库自动挂载服务
- vista下载_Vista和视图在游戏设计中的功能
- 职场生活:辞职也有大学问
- 2018年广东工业大学文远知行杯新生程序设计竞赛 1007 活在无尽梦境的后续 β...
- pytorch从ubuntu16.04到win7的迁移(解决)
- controller层没反应_一脚踏空就没命!57岁民警33层楼顶飞身救人
- 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS
- C程序设计--排序(冒泡、选择、插入)--选择
- 几何画板椭圆九种画法_如何利用几何画板自定义工具画椭圆
- java random 种子数_JAVA:Random的种子含义
- php mysql 博客,PHP操作MySQL
- 扣扣机器人唱歌_qq小冰机器人唱歌脚本-qq群机器人小冰无限唱歌插件下载v6.7.1 安卓版-腾牛安卓网...
- PyConChina 2019 深圳站之行
- laravel5.5 sendCloud 发送邮件(sendCloud Api and naux/sendcloud )
- UI控件DevExpress WinForm新手指南——如何在应用启动时执行操作
- EFM32 LEUART波特率计算
- 用于生菜的Linux
- face_detect
热门文章
- 根据身份证号(18/15)计算年龄、出生日期、性别
- EasyX库使用入门
- iPhone 11 Pro 的拍照好在哪?这是专业摄影师给出的答案
- zepto.js 处理Touch事件
- UE5 tiles 材质缩放平铺
- n阶魔方的构成方法C语言,穷举法打印n阶魔方矩阵
- DPU网络开发SDK——DPDK(十二)
- 如何在金仓数据库KingbaseES中使用pg_get_function_arg_default函数
- matlab构建信道模型channel model, Rayleigh channel (NLoS), Rician channel (LoS)
- 小波包MATLAB实现