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修改密码和登录更方便,可以复制粘贴,省了输 ...
随机推荐
- Python入门笔记(16):对文件的操作(2)
一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统.具体地说,它负责为用户建立文件,存入.读出.修改.转储文件,控制文件的存取,当用 ...
- Aspose.Word 操作word复杂表格 拆分单元格 复制行 插入行 文字颜色
private void button3_Click(object sender, EventArgs e) { object savePathWord =&q ...
- JavaWebSession
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- solr 学习片段
全文检索技术——Solr 1 主要内容 1.站内搜索技术选型 2.什么是solr Solr和lucene的区别 3.solr服务器的安装及配置 Solr整合tomcat Solr的演示 4.维护索引 ...
- iOS UITableview
1. UITableView //去除tableviews的点击效果 cell.selectionStyle = UITableViewCellSelectionStyleNone; //隐藏t ...
- UltraEdit打开UTF-8文件后显示中文乱码的问题
左图是UE,默认的编码格式GBK.右图可以看出可修改成UTF-8编码.按钮位置是UE底部状态栏,图3显示怎么开关状态栏. >>>>>>>>>> ...
- ElasticSearch实战使用
注意:以下命令都是使用sense测试(ElasticSearch第二步-CRUD之Sense),且数据都已经使用过IK分词. 以下测试数据来源于文档(db_test/person) 需要注意的是下面的 ...
- [WCF REST] Web消息主体风格(Message Body Style)
对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttr ...
- ajax使用
ajax基本使用 ajax在我们的开发中是必须使用的一个技术,ajax即异步的javascript和xml但是现在我们通常使用json来完成数据的交互,ajax职责很单一就是数据的交互,发送数据接收数 ...
- 递归练习(C语言)
本文地址:http://www.cnblogs.com/archimedes/p/recursive-practice.html,转载请注明源地址. 1.炮弹一样的球状物体,能够堆积成一个金字塔,在顶 ...