TP QQ 微信 微博登录
use Org\Util\QQconnect;
use Org\Util\Wechatauth;
use Org\Util\SaeTOAuthV2;
use Org\Util\SaeTClientV2;
switch ($_GET['type']) {
/* QQ互联登录 */
case 'qq':
$app_id = C('QQ_AUTH.APP_ID');
$scope = C('QQ_AUTH.SCOPE');
$callback = C('QQ_AUTH.CALLBACK');
$sns = new QQConnect;
$sns->login($app_id, $callback, $scope);
break;
/* 新浪微博登录 */
case 'sina':
$app_id = C('SINA_AUTH.APP_ID');
$app_key = C('SINA_AUTH.APP_KEY');
$callback = C('SINA_AUTH.CALLBACK');
$o = new SaeTOAuthV2($app_id,$app_key);
$code_url = $o->getAuthorizeURL($callback);
if($code_url){
header('Location:'.$code_url);
}else{
$this->error('授权失败','/Login/index');
}
break;
/* 微信扫码登陆 */
case 'wechat':
$app_id = C('WECHAT_AUTH.APP_ID');
$sid = session_id();
$options = array(
'account'=>$sid,
'datapath'=>'../data/cookiecode_',
'debug'=>true,
'logcallback'=>'logdebug'
);
$wechat = new Wechatauth($options);
if (isset($_POST['code'])) {
$logincode = $_POST['code'];
$vres = $wechat->set_login_code($logincode)->verify_code();
if ($vres===false) {
$result = array('status'=>0);
} else {
$result = array('status'=>$vres);
if ($vres==200) {
$result['info'] = $wechat->get_login_info();
$result['cookie'] = $wechat->get_login_cookie(true);
}
}
die(json_encode($result));
}
$wechat->get_login_code($app_id);//跳转登录
$wechat->get_code_image();
// var_dump($logincode);
// echo ($qrimg);
//$this->
break;
/* 支付登陆 */
case 'pay':
$mobile = trim(I('post.mobile'));
$verifyCode = trim(I('post.verify_code'));
if(!$mobile||!$verifyCode){$this->error('手机号或验证码不能为空~!');exit;}
$token = $this->token;
$url = $this->api_url.'/user/reqUserLoginMsg';//登录
$method = 'POST';
$data['token'] = $token;
$data['mobile'] = $mobile;
$data['rand_code'] = $verifyCode;
$data['deviceToken'] = 'PC';
$data['timestamp'] = time();
//加密转码
$data = ENCRYPT($data);
//获取数据
$result = CURL($url,$method,$data);
if($result['resultCode']==200){
//登录成功,更新token
$_SESSION['login_token'] = $result['resultInfo']['token'];
$_SESSION['head_img'] = $result['resultInfo']['head_img'];
$_SESSION['nickname'] = $result['resultInfo']['nickname'];
$this->redirect('/Pay/payList');
}else{
$this->error($result['resultMsg']);
// echo $result['resultMsg'];
}
break;
/* 默认无登录 */
default:
$mobile = trim(I('post.mobile'));
$verifyCode = trim(I('post.verify_code'));
if(!$mobile||!$verifyCode){$this->error('手机号或验证码不能为空~!');exit;}
$token = $this->token;
$url = $this->api_url.'/user/reqUserLoginMsg';//登录
$method = 'POST';
$data['token'] = $token;
$data['mobile'] = $mobile;
$data['rand_code'] = $verifyCode;
$data['deviceToken'] = 'PC';
if(trim(I('get.uid')))$data['uid'] = trim(I('get.uid'));
$data['timestamp'] = time();
//加密转码
$data = ENCRYPT($data);
//获取数据
$result = CURL($url,$method,$data);
if($result['resultCode']==200){
//登录成功,更新token、头像、昵称
$_SESSION['login_token'] = $result['resultInfo']['token'];
$_SESSION['head_img'] = $result['resultInfo']['head_img'];
$_SESSION['nickname'] = $result['resultInfo']['nickname'];
$this->redirect('Course/index');
}elseif($result['resultCode']==305) {
session(null);
$this->error('无此权限','/Course/index');
}else{
$this->error($result['resultMsg']);exit;
}
break;
}
// var_dump($result);
}
/*
* 互联登录返回信息
* 获取code 和 state状态,查询数据库
* */
public function callback() {
switch ($_GET['type']) {
/* 接受QQ互联登录返回值 */
case 'qq':
empty($_GET['code']) && $this->error("无效的第三方方式",U('/Login/index'));
$app_id = C('QQ_AUTH.APP_ID');
$app_key = C('QQ_AUTH.APP_KEY');
$callback = C('QQ_AUTH.CALLBACK');
$qq = new QQConnect;
/* callback返回openid和access_token */
$back = $qq->callback($app_id, $app_key, $callback);
//防止刷新
empty($back) && $this->error("请重新授权登录",U('/Login/index'));
//此处省略数据库查询,查询返回的$back['openid']
$openId = $back['openid'];
$token = $back['token']; //获取用户信息
$userInfo = $qq->get_user_info($app_id,$token,$openId);
//失败判断
empty($userInfo) && $this->error("获取信息失败,重新授权",U('/Login/index')); //var_dump($userInfo);
break; /* 接受新浪微博登录返回值 */
case 'sina':
empty($_GET['code']) && $this->error("无效的第三方方式",U('/Login/index'));
$app_id = C('SINA_AUTH.APP_ID');
$app_key = C('SINA_AUTH.APP_KEY');
//$scope = C('SINA_AUTH.SCOPE');
$callback = C('SINA_AUTH.CALLBACK'); /* 组建数组 传递新浪 */
$arr['code'] = $_GET['code'];
$arr['redirect_uri'] = $callback; $weibo = new SaeTOAuthV2($app_id,$app_key);
/* */
$back = $weibo->getAccessToken('code',$arr);
//array(4) { ["access_token"]=> string(32) "2.00SzTCnD0az6hG412356f4f506JCuO" ["remind_in"]=> string(9) "157679999" ["expires_in"]=> int(157679999) ["uid"]=> string(10) "3473030892" }
//var_dump($back);die(); /*
* follow_by_id 关注一个用户
* account_profile_basic 获取用户基本信息
* show_user_by_id 获取用户资料
*
*/
$w = new SaeTClientV2($app_id,$app_key,$back['access_token']);
$userInfo = $w->show_user_by_id($back['uid']); //失败判断
empty($userInfo) && $this->error("获取信息失败,重新授权",U('/Login/index')); //var_dump($userInfo);die();
$nickname = $userInfo['name'];
$head_img = $userInfo['profile_image_url'];//的头像 break;
case 'wechat':
//获取access_token
$app_id = C('WECHAT_AUTH.APP_ID');
$app_key = C('WECHAT_AUTH.APP_KEY');
$code = trim(I('get.code'));
if(!$code)$this->error("无效的第三方方式",U('/Login/index'));
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$app_id."&secret=".$app_key."&code=".$code."&grant_type=authorization_code"; $result = CURL($url,'GET');
empty($result) && $this->error("获取信息失败,重新授权",U('/Login/index')); $access_token = $result['access_token'];
$openId = $result['openid']; $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openId;
$userInfo = CURL($url,'GET');
empty($userInfo) && $this->error("获取信息失败,重新授权",U('/Login/index')); //var_dump($userInfo);die(); break;
/* 默认错误跳转到登录页面 */
default:
$this->error("无效的第三方方式",'/Login/index');
break;
}
}
类文件打包下载:
https://pan.baidu.com/s/1slH1VEt
TP QQ 微信 微博登录的更多相关文章
- Python 第三方登录 实现QQ 微信 微博 登录
本人写的AgentLogin,能快速返回QQ.微信.微博第三方用户名信息,主要用于快速登录 用 pip命令安装 pip install AgentLogin 用法 : 导入这个包 from Agent ...
- Oauth2.0 QQ&微信&微博实现第三方登陆
一.写在前面 目前对于大多数的App或Web网站都支持有第三方登陆这个功能,用户可使用 QQ/ 微信/ 微博 帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户.最近在新项目上刚好用到了,在 ...
- 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)
刚准备敲键盘,突然想起今天已经星期五了,有点小兴奋,一周又这么愉快的结束,又可以休息了,等等..我好像是来写Java博客的,怎么变成了写日记,好吧,言归正传. 不知道大家有没有遇到过这样的需求:统计一 ...
- qq 微信 微博 第三方分享
<html> <head> <meta charset="utf-8"> <meta name="viewport" ...
- 分享-QQ/微信/微博(环境搭建)
QQ环境搭建
- dedecms织梦第三方登录插件-QQ登录、微博登录、微信登录
织梦程序集成第三方QQ登录.微博登录.微信登录,获取QQ.微博.微信,并存储至数据库,一键注册为网站会员,不用再次填写绑定信息,方便粘贴用户更强. 织梦第三方登录效果 第三方登录插件特点 1.所有文件 ...
- 基于Swift语言开发微信、QQ和微博的SSO授权登录代码分析
前言 Swift 语言,怎么说呢,有一种先接受后排斥.又欢迎的感觉,纵观国外大牛开源框架或项目演示,Swift差点儿占领了多半,而国内尽管出现非常多相关技术介绍和教程,可是在真正项目开发中使用的占领非 ...
- 带三方登录(qq,微信,微博)
实现QQ.微信.新浪微博和百度第三方登录(Android Studio) 前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于 ...
- 自定义UI集成微信、QQ、微博分享功能
目前社会化分享是一个非常常见的功能,通过阅读官方文档可以进行对应平台的分享.在项目中原本有微信的分享,后来需要集成QQ和微博的分享,于是想着用ShareSDK,在使用的过程中发现ShareSDK中的w ...
随机推荐
- ssh架构之hibernate(四)二级缓存
二级缓存使用步骤: 1.拷贝jar包 2.配置Hibernate.cfg.xml文件 a.#开启二级缓存 hibernate.cache.use_second_level_cache=true b.# ...
- onMouseOver&onMouseOut vs onMouseEnter&onMouseLeave
[onMouseOver&onMouseOut vs onMouseEnter&onMouseLeave] 1.onmouseleave.onmouseenter,鼠标进入到指定元素区 ...
- VBox添加虚拟磁盘挂载
1. 关闭虚拟机,然后在设置里面选择添加虚拟硬盘 2.lsblk检查存在10G sdb虚拟磁盘 fdisk -l 检查 /dev/sdb 尚没有分区 3.磁盘分区 4.检查分区状况lsblk 5.格式 ...
- Oracle 存储过程例子返回记录集
转载:https://www.cnblogs.com/mikalshao/articles/1454134.html Oracle 不支持批量查询,因此无法从一个命令返回多个结果集.使用存储过程时,返 ...
- 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面
网页中引用的外部文件: JavaScritp.CSS 等常常会阻塞浏览器渲染页面.假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染 ...
- c++ 面试题(汇总)
1,extern 关键字作用: http://www.cnblogs.com/lzjsky/archive/2010/11/24/1886686.html 2,static 关键字作用: https: ...
- UVA-10054.The Necklace(欧拉回路)解题报告
2019-02-09-21:55:23 原题链接 题目描述: 给定一串珠子的颜色对,每颗珠子的两端分别有颜色(用1 - 50 之间的数字表示,对每颗珠子的颜色无特殊要求),若两颗珠子的连接处为同种颜色 ...
- manipulate
manipulate - 必应词典 美[mə'nɪpjə.leɪt]英[mə'nɪpjʊleɪt] v.控制:摆布:(有技巧地)使用:巧妙地处理(问题等) 网络操纵:被操纵:被控体 变形第三人称单数: ...
- 100-days: Four
Title: Weekend 'catch-up sheep' is a lie catch-up n.补做:赶做 play catch-up 通过追赶,达到同样的水平或程度 catch-up sle ...
- 微信小程序开发-rem转换rpx小工具
实现原理: 对样式进行格式化,然后根据 “rem” 进行拆分,这样就会拆分成一个数组 [str1,str2,str3...,str6], 除了最后一个元素,前边的元素都会以 “rem” 样式的数值结尾 ...