QQ一键登录功能的实现过程
QQ登录的思路:
当qq登陆成功后,QQ会给我们返回一个唯一的用户标识:openId,当用户授权QQ时,判断
if(已经有openId){
跳转到登陆后的页面。
}else if(没有openId){
跳转到注册页面->然后绑定->跳转到登陆后的页面
}
绑定:将用户id和唯一标识关联,所有一键登录原理皆如此
过程:
1、实现QQ登录需要在QQ互联先创建应用:http://connect.qq.com/
2、创建应用成功得到:APP ID 和 KEY
3、确保要用得的API已激活,如下:

4、下载相应的SDK
5、解压SDK后浏览文件夹设置配置项,其实就是设置API->comm->inc.php文件(->代表文件夹里面),可以不浏览,自己去设置,复制以下并修改appid、appkey和回调地址,这三项一定要跟申请的应用一致,否则是不行的!
{"appid":"2222094","appkey":"f8ac3d316ebd74d2039294fff81cce9b","callback":"http://xxx/api/qq/callback.php","scope":"get_user_info","errorReport":true,"storageType":"file","host":"localhost","user":"root","password":"root","database":"test"}
6、简化文件,实际上有用的就这几个文件,保留API(类及设置文件夹)、example(API例子)和index.php授权页面,当然example只是做参考,实际上你不需要也是可以丢掉的,但是一般还是留着,以防要用的时候要重新下载SDK

最重要的就是:
a.授权页面:example->oauth->index.php
b.回调页面:example->oauth->callback.php
c.还有你要执行的API:example->get_info->get_info.php
我喜欢把要用的文件拿到前面,如:example里面的get_info.php,拿到新建的user文件夹里面,还有把回调页面,感觉干净了很多 (移动的时候注意路径)

7、使用API需要传入:$openid、$access_token
所以在callback.php设置了session,如下:
require_once("API/qqConnectAPI.php");
$qc = new QC();
$_SESSION['access_token']=$qc->qq_callback();
$_SESSION['openid']=$qc->get_openid();
header('Location:'.'user/get_user_info.php');
get_info.php拿用户信息:
$qc = new QC();
$access_token=$_SESSION['access_token'];
$openid=$_SESSION['openid'];
$arr = $qc->get_user_info();
print_r($arr) 即看到返回的信息

Array
(
[ret] => 0
[msg] =>
[nickname] => 卡
[gender] => 男
[figureurl] => http://qzappss
[figureurl_1] => http://qzapp.qlogo.cnss
[figureurl_2] => http://qzapp.qlogo.cn/
[vip] => 0
[level] => 0
[is_yellow_year_vip] => 0
)

技巧:当页浏览拿数据,重组数组并提交到“借数据页面”,通常也是注册页面
$param=array('action'=>"接数据页面",'orther_web_id'=>$_SESSION['openid'],'orther_web_name'=>urldecode($urlname),'orther_web'=>'QQ');
echo form($param);
form()是一个很方便的函数,提交过来的数组,相当于把数组每个值都放到一个input,然后按提交按钮,他自己创建自己提交,纯自动!
凡是一个页面提交了数据那就能用$_GET或$_POST拿到啦!

function form($param){
$f='';
foreach($param as $k=>$v){
if($k=='action'){
$f='<form id="formpost" method="post" action="'.$v.'">';
}
else{
if($k=='orther_web_id') $v=authcode($v,'ENCODE');
$f.='<input type="hidden" name="'.$k.'" value="'.$v.'" />';
}
}
$f.="<input type='submit' style='width:0px; height:0px;filter:alpha(opacity=0);opacity:0' value='' /></form><script>document.getElementById('formpost').submit();</script>";
return $f;
}

8、最后一步就是在“接收数据页”把数据接收,拿QQ名称就:$_POST['orther_web_name']....剩下的就都不是问题了
QQ一键登录功能的实现过程的更多相关文章
- 项目开发-->一键登录功能汇总
开发网站经常会提供一些一键登录功能,如:QQ.新浪微博.淘宝账号.开心网账号.人人网账号等进行快捷登录,下面记录几个常用的开放平台地址,方便以后开发需要. 1.QQ互联 2.新浪微博 网站接入QQ互联 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍
笔记 1.数据信息安全--微信授权一键登录功能介绍 简介:讲解登录方式优缺点和微信授权一键登录功能介绍 1.手机号或者邮箱注册 优点: ...
- 批处理文件——多个QQ一键登录
偶然看到有的同学登录PC的QQ,发现他有很多QQ,每登录一个要切换一个,虽然记住了密码,但还是不方便,于是想通过批处理来实现“一键登录”的功能.以下内容为本文假想,如有雷同,实属巧合! 具体的实现步骤 ...
- Destoon QQ互联一键登录审核不通过的解决方案
在QQ互联上申请帐号之后提交了审核, 后台填写APPID和KEY之后自己申请的QQ号可以正常登录,但QQ互联审核的时候一直审核不通过说是“您的网站审核未通过,原因是“点击QQ登录按钮提示登录失败或出现 ...
- 一键登录怎么在iOS端实现?这篇文章教会你!
在一键登录出现之前,市场上最常见的APP 注册登录方式主要有账号密码.短信验证及第三方登录.这几种方式看似常见且便捷,实则存在许多安全隐患,用户体验也相对较差.首先,短信验证码到达率低.用户操作繁琐且 ...
- 一键登录已成大势所趋,Android端操作指南来啦!
根据极光(Aurora Mobile)发布的<2019年Q2移动互联网行业数据研究报告>,2019年第二季度,移动网民人均安装APP总量已达56款.面对如此繁多的APP,想在用户的手机中占 ...
- Redis限制一键登录次数
一.产生背景 之前的随笔提到过项目中写了一键登录功能.上线后除了有时候网络波动会导致登陆失败,其他情况一直稳如老狗 しかし,邮件看到有人恶意刷一键登录,这年头闲的人可真闲啊, 只能思考如何搞一搞 二. ...
- React Native 接入微博、微信、QQ 登录功能
在 App 开发中我们经常需要在用户登录模块接入 SNS 登录组件,这样会大大提高用户的注册体验.特别当一个不是刚性需求 App 推广的时候,这样会很大的降低用户体验的成本,没有人愿意忍受输入邮箱.手 ...
- 速成KeePass全局自动填表登录QQ与迅雷(包括中文输入法状态时用中文用户名一键登录)
原文:http://bbs.kafan.cn/thread-1637531-1-1.html 使用目的:1 网页和本地客户端登录一站式解决2 通过KeePss修改密码和登录更方便,可以复制粘贴,省了输 ...
随机推荐
- 【C#】OOP之多态那点事
前言: 对菜鸟开发者的忠告:花一万个小时练习 Coding,不要浪费一万小时无谓地 Debugging(也就说看代码) 看上面的UML图,我们创建一个抽象的Instrument类,类中有一个抽象方法p ...
- MySQL数据库 安装图解
下面的是MySQL安装的图解,用的可执行文件:下载地址:http://www.jinhusns.com/Products/Download/?type=xcj相关下载 mysql安装向导启动,按“Ne ...
- 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket
[源码下载] 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 So ...
- [moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)
方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方 ...
- windows下使用makecert命令生成自签名证书
1.makecert命令路径 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 2.生成一个自签名证书 makecert -r -pe -n " ...
- SharpGL学习笔记(十六) 多重纹理映射
多重纹理就把多张贴图隔和在一起.比如下面示例中,一个表现砖墙的纹理,配合一个表现聚光灯效果的灰度图,就形成了砖墙被一个聚光灯照亮的效果,这便是所谓的光照贴图技术. 多重纹理只在OpenGL扩展库中才提 ...
- webpack常用的插件安装命令
webpack常用的插件安装命令:1:npm install html-webpack-plugin --save-dev //自动快速的帮我们生成HTML.2:npm install css-loa ...
- css清除浮动定位造成的异常
清除浮动是为了解决高度塌陷的问题:内层有好几个div有宽有高,并且选择了浮动定位,但是外层的div却并没有设置宽高.在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动( ...
- C语言中do...while(0)用法小结
在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 本文地址:http://www.cnblogs.com/archimedes/p/ ...
- DOM解析XML文件
1.首先把第三方代码拖进工程 GDataXMLNode.h和GDataXMLNode.m这两个文件放进工程里面 2.引入libxml2库文件 3.将GDataXMLNode.h文件中的这两个东西在工程 ...