本文详细介绍了phpcmsV9完成qq登录oauth2.0的方式,有需要的朋友可以参考一下。
phpcmsV9应用的QQ登录仍然是OAuth1.0,但是现在腾讯官方已经停止审批OAuth1.0应用的网址。这对于使用pc的站长来说是一个极其大的坑。在phpcms社区论坛对一个同学做的软件做了修改后,现在我已经完成了QQ登录,没有发现bug。
完成流程:
①打开\phpcms\modules\member\index.php文件,将底部的代码插入到一个区域中(pc默认在QQ集底部即可立即登录)。
复制以下代码:
/QQ登录OAuth2.0
public函数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=newqqOAuth2($appid,$appkey,$callback);
$this->;_session_start();
如果(!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'));
如果(!Empty($r){
/QQ已经存储在数据库查询中,那么会立即改为实际登录 *** 作
$password=$r['password'];
$this->;_init_phpsso();
$synloginstr=$this->;客户端->;PS_member_synlogin($r['phpssouid']);
$userid=$r['userid'];
$groupid=$r['groupid'];
$username=$r['username'];
$nickname=emptyempty($r['nickname'])?$username:$r['昵称'];
$this->;dB->;update(array('lastip'=>;ip(),'lastdate'=>SYS_TIME,'昵称'=>$me['name'])、array('userid'=>;$userid));
如果(!$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=成员&c=索引';
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'){//转移号码
includetemplate('member','connect');
}}}
}
②将附件的qqOAuth2.class.php文件放在文件夹名\phpcms\modules\member\classes\中。
③在后台管理中查找连接设置,将QQ号登录的回拨功能详细地址改为https://www.jb51.net/index.php?.m=member&;c=指数&A=public_qq_login2(把我的网站域名改成你自己的)
④填写AppID和Appkey,然后升级缓存文件。
⑤登录phpmyadmin,查找表v9_member的connectid字段名(或自定义字段名),将类型改为“char(255)”,因为phpcms的默认设置是15位数字。于是大家马上改成了255位,这是腾讯官方第三方网站账号(如淘宝、支付宝钱包、百度搜索、360等第三方账号),可以用于数据信息关联。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)