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)){
[*]$info->redirect_to_login();
[*]}else{
[*]$code=$_GET;
[*]$_SESSION=$info->get_openid($code);//调取QQopenid值
[*]if(!emptyempty($_SESSION)){
[*]$r=$this->db->get_one(array(connectid=>$_SESSION,from=>qq));
[*]if(!emptyempty($r)){
[*]//QQ已存在于数据库,则间接转向上岸操纵
[*]$password=$r;
[*]$this->_init_phpsso();
[*]$synloginstr=$this->client->ps_member_synlogin($r);
[*]$userid=$r;
[*]$groupid=$r;
[*]$username=$r;
[*]$nickname=emptyempty($r)?$username:$r;
[*]$this->db->update(array(lastip=>ip(),lastdate=>SYS_TIME,nickname=>$me),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)&&!emptyempty($_GET)?$_GET:index.php?m=member&c=index;
[*]showmessage(L(login_success).$synloginstr,$forward);
[*]}else{
[*]//未存在于数据库中,跳往完美材料页面。页面预置用户名(QQ前往是UTF8编码,若有必要举行转码)
[*]$user=$info->get_user_info();
[*]$_SESSION=$_SESSION;
[*]$_SESSION=qq;
[*]if(CHARSET!=utf-8){//转编码
[*]$connect_username=iconv(utf-8,CHARSET,$user);
[*]}
[*]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的周边代码太少了,网上找都找不到。
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 实践是检验自己会不会的真理。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
页:
[1]