服务器之家

服务器之家 > 正文

phpcms V9实现QQ登陆OAuth2.0提供下载

时间:2019-10-11 13:15     来源/作者:phpcms教程网

实现步骤:

①打开\phpcms\modules\member\index.php文件,把下面的代码找个地方塞进去(可以直接在pc默认的QQ登陆下面)。

 

复制代码

代码如下:


//QQ登陆oAuth2.0 
ublic function public_qq_login2(){ 
$appid = pc_base::load_config('system', 'qq_appid'); 
$appkey = pc_base::load_config('system', 'qq_appkey'); 
$callback = pc_base::load_config('system', 'qq_callback'); 
pc_base::load_app_class('qqOAuth2','',0); 
$info = new qqOAuth2($appid,$appkey,$callback); 
$this->_session_start(); 
if (!isset($_GET['code'])){ 
$info->redirect_to_login(); 
}else{ 
$code = $_GET['code']; 
$_SESSION['openid'] = $info->get_openid($code);//调取QQ openid值 
if(!emptyempty($_SESSION['openid'])){ 
$r = $this->db->get_one(array('connectid'=>$_SESSION['openid'],'from'=>'qq')); 
if(!emptyempty($r)){ 
//QQ已存在于数据库,则直接转向登陆操作 
$password = $r['password']; 
$this->_init_phpsso(); 
$synloginstr = $this->client->ps_member_synlogin($r['phpssouid']); 
$userid = $r['userid']; 
$groupid = $r['groupid']; 
$username = $r['username']; 
$nickname = emptyempty($r['nickname']) ? $username : $r['nickname']; 
$this->db->update(array('lastip'=>ip(), 'lastdate'=>SYS_TIME, 'nickname'=>$me['name']), array('userid'=>$userid)); 
if(!$cookietime) $get_cookietime = param::get_cookie('cookietime'); 
$_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0); 
$cookietime = $_cookietime ? TIME + $_cookietime : 0; 
$phpcms_auth_key = md5(pc_base::load_config('system', 'auth_key').$this->http_user_agent); 
$phpcms_auth = sys_auth($userid."\t".$password, 'ENCODE', $phpcms_auth_key); 
param::set_cookie('auth', $phpcms_auth, $cookietime); 
param::set_cookie('_userid', $userid, $cookietime); 
param::set_cookie('_username', $username, $cookietime); 
param::set_cookie('_groupid', $groupid, $cookietime); 
param::set_cookie('cookietime', $_cookietime, $cookietime); 
param::set_cookie('_nickname', $nickname, $cookietime); 
$forward = isset($_GET['forward']) && !emptyempty($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index'; 
showmessage(L('login_success').$synloginstr, $forward); 
}else{ 
//未存在于数据库中,跳去完善资料页面。页面预置用户名(QQ返回是UTF8编码,如有需要进行转码) 
$user = $info->get_user_info(); 
$_SESSION['connectid'] = $_SESSION['openid']; 
$_SESSION['from'] = 'qq'; 
if(CHARSET != 'utf-8') {//转编码 
$connect_username = iconv('utf-8', CHARSET, $user['nickname']); 

include template('member', 'connect'); 



 

②把附件的qqOAuth2.class.php文件放在 \phpcms\modules\member\classes\ 文件夹里。
③在后台找到connect设置,把QQ号码登陆的回调地址改成https://www.zzvips.com/index.php?m=member&c=index&a=public_qq_login2 (把我的域名换成你自己的)
④填好App ID和App key,然后更新缓存。
⑤登陆phpmyadmin,找到v9_member这张表的connectid字段(或者自定义的字段),把类型改成“char(255)”,因为phpcms默认是15位的。所以我们直接彻底修改成255位,这个不管是腾讯的其它第三方网站帐号(例如淘宝、支付宝、百度、360等其它第三方帐号),都可以完成数据绑定。(此条添加于7月27号,由网友liuyang814发邮件提醒)
后期会把新浪微博及腾讯微博的代码放上来。phpcms的周边代码太少了,网上找都找不到。

服务器之家特提供下载 qqOAuth2.rar

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部

349
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40