为用户中心LayCenter添加一个社交登录扩展插件

LayCenter预留了社交登录扩展接口,可以方便的接入新的第三方社交登录,在此之前需要了解一下如何创建一个扩展插件 ,创建扩展教程地址:https://kfuu.cn/zblogjiaocheng/89.html

 

为用户中心LayCenter添加一个社交登录扩展插件,第1张

 

在LayCenter上接入一个新的社交登录是一个非常简单的事情。只需要两步:在callback完成后调用公共方法 和 挂载一个多功能接口

callback页面

<?php

//.......这里应当编写实际需要的回调代码,需要获得openid 昵称 头像信息

//用自己的方法获取已绑定的用户对象
$member = new Member;
$member->LoadInfoByFields(array('meta' => array('tyy_openid' => $openid)));

//最后向LayCenter提交openid 昵称 头像信息,接下来由LayCenter继续完成
$lcp->login->oAuthCallback( $member,'189天翼', $user_id, $nickname, $avatar);

//调用oAuthorCallback方法:

//参数一:已绑定的用户对象,未绑定的可以传入一个新用户对象或空值
//参数二:社交账户类型名称
//参数三:第三方登录平台提供的唯一的用户ID
//参数四:社交账户的昵称
//参数五:社交账户的头像链接

挂载接口

Add_Filter_Plugin('Filter_LayCenter_oAuth_Connect','LayCenter_demo_oAuth_Connect');
function LayCenter_demo_oAuth_Connect(){
    global $zbp,$lcp;
    
    return array(
        'icon' => 'iconfont icon-tianyiyun', //社交登录图标的class值
        'name' => '189天翼', //社交账号名称,(社交账号之间的名称不能相同,并且这里的名称必须和callback页面中传入oAuthCallback的第二个参数值相同)
        'login'=> $zbp->host.'zb_users/LayCenter/alipaylogin/login.php',  //社交账号登录或绑定地址
        'callback' => array(
            'bind' => function($member, $name, $openid, $nickname, $avatar)use($lcp){
                //用户在进行绑定操作时,会回调此函数。
                //参数一:$member 执行绑定的用户对象
                //参数二:$name 为社交账号类型名称,示意例代码中这个值传入的是“189天翼”
                //参数三:$openid 社交账户返回的openid 这里是callback页面中传入的内容
                //参数四:$nickname 社交账户上的昵称 这里是callback页面中传入的内容
                //参数五:$avatar 社交账户上的头像 这里是callback页面中传入的内容
                $member->Metas->tyy_openid = $openid;
                return true;
                //如果是存在$member对象(表)中,不需要进行$member->Save()保存
            },
            'isBind' => function($member)use($lcp){
                //在检测用户是否绑定此社交账户时,会回调此代码,返回true代表已经绑定,false代表未绑定
                //参数一:$member 检测的用户对象
                return (bool)$member->Metas->tty_openid;
            },
            'unBind' => function($member)use($lcp){
                //解绑社交账户时,会回调此代码
                //参数一:$member 检测的用户对象
                $member->Metas->Del('tyy_openid');
                //这里只需要将绑定的信息删除即可,如果是存在$member对象(表)中,不需要进行$member->Save()保存
            },
            'getMemberByOpenId' => function($openId){ //LayCenter 5.3.1 及更高版本会调用此方法
                //根据用户openid获取用户对象
                $member = new Member;
                $member->LoadInfoByFields(array('meta' => array('tty_openid' => $openId)));
                return $member->ID ? $member : false; //已绑定的用户返回member对象,未绑定的返回false
            }
        )
    );
}

至此一个新的社交账户登录就算接入完成。

回调函数说明

bind 回调函数,当用户执行绑定的时候会回调此函数,这里只需要将openid和用户建立一个对应关系就行,可以记录在$member的Meta中,也可以记录在其它表

isBind 回调函数,在社交绑定页面中或登录时,会回调此函数,这里只需要判断一下用户有没有绑定过此社交账户,返回true 或 false

unBind 回调函数,在用户进行解绑操作时会回调此函数,只需要将用户的绑定关系解除即可