深爱那片海 发表于 2015-1-16 22:14:23

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的周边代码太少了,网上找都找不到。
在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。

只想知道 发表于 2015-1-19 05:54:46

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

飘飘悠悠 发表于 2015-2-8 17:51:45

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

不帅 发表于 2015-2-25 21:59:54

实践是检验自己会不会的真理。

深爱那片海 发表于 2015-3-8 07:43:57

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

再现理想 发表于 2015-3-15 22:05:11

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

灵魂腐蚀 发表于 2015-3-22 05:45:23

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
页: [1]
查看完整版本: PHP教程之phpcms V9完成QQ上岸OAuth2.0