开发交流

老杨原创-ecshop腾讯qq、新浪、支付宝、facebook快捷登录oauth2.0功能插件整合[11.18更新]

LYECS,LYECS+商城系统,多用户商城系统,开源商城系统 发布日期:2014-07-29   作者:老杨

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>   


4、找到themes/模板目录/flow.dwt

找到

<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>   

 
 



 

热门文章

分类标签