仓酷云
标题:
PHP教程之phpcms V9完成QQ上岸OAuth2.0
[打印本页]
作者:
深爱那片海
时间:
2015-1-16 22:14
标题:
PHP教程之phpcms V9完成QQ上岸OAuth2.0
因为函数实在是太多了,慢慢的你就会知道,知道有这个函数就可以。phpcmsV9利用的QQ上岸仍然是OAuth1.0,但如今腾讯已不考核利用OAuth1.0的网站了。这关于利用pc的站长来说是一个非常伟大的坑。经由对phpcms论坛的一名同砚做的插件举行修正,如今完善完成QQ上岸,暂无发明bug。
完成步骤:
①翻开phpcmsmodulesmemberindex.php文件,把上面的代码找个中央塞出来(能够间接在pc默许的QQ上岸上面)。
//QQ上岸oAuth2.0
ublicfunctionpublic_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=newqqOAuth2($appid,$appkey,$callback);
$this->_session_start();
if(!isset($_GET[code])){
$info->redirect_to_login();
}else{
$code=$_GET[code];
$_SESSION[openid]=$info->get_openid($code);//调取QQopenid值
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." ".$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]);
}
includetemplate(member,connect);
}
}
}
}
②把附件的qqOAuth2.class.php文件放在phpcmsmodulesmemberclasses文件夹里。
③在背景找到connect设置,把QQ号码上岸的回调地点改成http://php100.com/index.php?m=member&c=index&a=public_qq_login2(把我的域名换成你本人的)
④填好AppID和Appkey,然后更新缓存。
⑤上岸phpmyadmin,找到v9_member这张表的connectid字段(大概自界说的字段),把范例改成“char(255)”,由于phpcms默许是15位的。以是我们间接完全修正成255位,这个不论是腾讯的别的第三方网站帐号(比方淘宝、付出宝、百度、360等别的第三方帐号),都能够完成数据绑定。(此条增加于7月27号,由网友liuyang814发邮件提示)
前期会把新浪微博及腾讯微博的代码放下去。phpcms的周边代码太少了,网上找都找不到。
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。
作者:
只想知道
时间:
2015-1-19 05:54
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox 支持的不是很好,所以能少用还是少用的好。
作者:
飘飘悠悠
时间:
2015-2-8 17:51
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者:
不帅
时间:
2015-2-25 21:59
实践是检验自己会不会的真理。
作者:
深爱那片海
时间:
2015-3-8 07:43
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者:
再现理想
时间:
2015-3-15 22:05
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者:
灵魂腐蚀
时间:
2015-3-22 05:45
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2