老杨原创-ecshop腾讯qq、新浪、支付宝、facebook快捷登录oauth2.0功能插件整合[11.18更新]
2015.11.18日有更新,增加安全验证,另外因QQ互联机制变更,更改qq登陆机制。
下载链接:http://pan.baidu.com/s/1pJvOvAr (这是最新的下载地址)
这个功能插件最原始是由路灯发布的,我最初也是使用的这个,后来qq等陆续发布oauth2.0接口更新,导致原插件不可再用。
老杨重写这个插件的所有结构,仅保留后台设置的部分。
另外,推出ecshop的facebook快捷登陆(大陆不可用,需翻墙测试,适合做外贸的站)www.lyecs.com 老杨ecshop开发中心
每一个快捷登陆后台都有提供申请地址,请按各官方提供的申请流程操作,请勿再联系老杨说插件不可用,老杨所有客户都是使用此插件,请多再看一下哪里设置了出问题!
强调,每一次后台更改设置后,不要忘记点一下重新生成插件按钮哦。
报错情况可能:
1、后台设置更改后没有点重新生成插件按钮
2、互联的设置错误,没有填写回调地址等(填首页)
3、id或secret错误!
4、总之不是插件的错误!
5、老杨版深度二次开发框架lyecshop v1.1.3已高度整合此功能!
……
总之的总之,关于此插件,老杨不再提供技术咨询(有偿的也不提供),所以多自己测试,调试,一定会成功的!
之前的下载文件少了一个语言文件,已更新
对于在登陆页面登陆后,不跳转的,只需要在user.php找到:
elseif ($action == 'login')
{
添加:
if($user_id){
ecs_header('Location: index.php');
}
即可
初始化方法:
点第三方登陆插件:
右上角有这个按钮,操作后都点一次。
效果如图:
安装方法:
1、先下载文档,上传覆盖文件(注意备份)
下载链接:http://pan.baidu.com/s/1pJvOvAr (这是最新的下载地址)
2、手动修改以下地方:
(1)user.php文件
找到以下代码:
array('login','act_login'
在其后面插入:
,'oauth_login','act_oauth_login'
效果如:array('login','act_login','oauth_login','act_oauth_login'
(2)找到以下代码:
/* 处理会员的登录 */ elseif ($action == 'act_login') {
//在其上面插入以下代码:
elseif($action == 'oauth_login') { $type = empty($_REQUEST['type']) ? '' : $_REQUEST['type']; $type_arr=array('qq','sina','alipay','taobao','weixin'); if(!in_array($type, $type_arr)){ die('错误!'); } include_once(ROOT_PATH . 'includes/login/functions.php'); $url=get_oauth_url($type); if($url){ echo(" "); }else{ die('错误!'); } } elseif($action == 'act_oauth_login') { include_once(ROOT_PATH . 'includes/login/functions.php'); $type = empty($_REQUEST['type']) ? '' : $_REQUEST['type']; $type_arr=array('qq','sina','alipay','taobao','weixin'); if(!in_array($type, $type_arr)){ die('错误!'); } $info=get_oauth_info($type); if(!empty($info['error'])) { show_message('登录出错,错误码'.$info['error'], $_CFG['url'] , 'error' , false); } if(!$info['user_id'] || !$info['user_name']){ show_message('登录出错,数据异常!', $_CFG['url'] , '' , false); } $info_user_id = $type .'_'.$info['user_id']; $info['user_name'] = str_replace("'" , "" , $info['user_name']); $sql = 'SELECT user_name,password,aite_id FROM '.$ecs->table('users')." WHERE aite_id = '$info_user_id' OR aite_id='$info[user_id]'"; $user_info = $db->getRow($sql); //die(print_r($user_info)); if(!$user_info) // 没有当前数据 www.lyecs.com { if($user->check_user($info['user_name'])) // 重名处理 { $info['user_name'] = $info['user_name'].'_'.(rand( 0 , 100)); } $password = $user->compile_password(array('password'=>$info['user_id'])); $sql = 'INSERT INTO '.$ecs->table('users').'(user_name , password, aite_id , sex , reg_time , user_rank , is_validated) VALUES '. "('$info[user_name]' , '$password' , '$info_user_id' , '$info[sex]' , '".gmtime()."' , '0' , '1')" ; $db->query($sql); } else { $sql = ''; if($info['user_id'] == $user_info['aite_id']) // 为兼容之前的版本写的 // 直接使用 可以 删除 此段 { $sql .= 'aite_id = \''.$info_user_id.'\' ,'; } if($info['user_name'] != $user_info['user_name']) { $sql .= " user_name = '$info[user_name]' ,"; } if($info['sex'] != $user_info['sex']) { $sql .= " sex = $info[sex] ,"; } if($sql) { $sql = substr($sql , 0 ,strlen($sql) -1); $sql = 'UPDATE '.$ecs->table('users').' SET '. $sql ." WHERE aite_id= '$info[user_id]'"; $db->query($sql); } } $user->set_session($info['user_name']); $user->set_cookie($info['user_name']); update_user_info(); recalculate_price(); die(' '); }
2、找到admin/templates/top.html
找到
{foreach from=$nav_list item=item key=key} <li><a href="{$key}" target="main-frame">{$item}</a><li> {/foreach} <li><a href="website.php?act=list" target="main-frame">第三方登陆插件</a><li>
3、找到themes/模板目录/user_passport.dwt
找到:
<input type="submit" name="submit" value="" class="us_Submit" />
添加:
<ul class="other-form"> <li><h5>使用第三方帐号登录</h5></li> <li class="other-login"> <a target="_self" href="javascript:;" onclick="login('user.php?act=oauth_login&type=qq&open=1')"> <img style=" margin-top:3px;" src="/lyecs_style/images/login/lg_cft.gif"></a> <a href="javascript:;" onclick="login('user.php?act=oauth_login&type=alipay&open=1')"> <img style=" margin-top:3px;" src="/lyecs_style/images/login/lg_alipay.gif"></a> <a href="javascript:;" onclick="login('user.php?act=oauth_login&type=sina&open=1')"> <img style=" margin-top:3px;" src="/lyecs_style/images/login/lg_sina.gif"></a> <li> </ul> <script type="text/javascript"> function login(url , width , height) { widthwidth = width == null ? 490 : width; heightheight = height == null ? 320 : height; var iTop = (window.screen.availHeight-30-height)/2; var iLeft = (window.screen.availWidth-10-width)/2; childWindow = window.open(url,"TencentLogin","width="+width+",height="+height+",top="+iTop+",left="+iLeft+",menubar=0,scrollbars=1, resizable=1,status=1,titlebar=0,toolbar=0,location=1"); } </script>
找到
<input type="submit" name="Submit" class="bnt_blue_1" value="{$lang.forthwith_register}" />
<input name="act" type="hidden" value="signup" />
在其上面添加3中的代码。ecshop模板
样式大家自行修改一下!
5、关于需要facebook的,
admin/template/website.htm
在
<tr align="center"> <td>支付宝登陆</td> <td align="left">申请链接:<a href="https://b.alipay.com/order/productDetail.htm?productId=2013052704023441" target="_blank">https://b.alipay.com/order/productDetail.htm?productId=2013052704023441</a></td> <td> <a href="website.php?act=view&type=alipay">{$lang.view}</a> </td> </tr>
后面添加一段:
<tr align="center"> <td>facebook登陆td> <td align="left">申请链接:<a href="https://developers.facebook.com/apps?ref=mb" target="_blank">https://developers.facebook.com/apps?ref=mb</a>td> <td> <a href="website.php?act=view&type=facebook">{$lang.view}</a> td> tr>
所有前台按钮在下面代码下面:
<a href="javascript:;" onclick="login('user.php?act=oauth_login&type=sina&open=1')">
<img style=" margin-top:3px;" src="/lyecs_style/images/login/lg_sina.gif"></a>
加
<a target="_self" href="javascript:;" onclick="login('user.php?act=oauth_login&type=facebook&open=1')">
<img style=" margin-top:3px;" src="/lyecs_style/images/login/lg_facebook.gif"></a>