为用户中心LayCenter添加一个社交登录扩展插件
LayCenter预留了社交登录扩展接口,可以方便的接入新的第三方社交登录,在此之前需要了解一下如何创建一个扩展插件 ,创建扩展教程地址:https://kfuu.cn/zblogjiaocheng/89.html
在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 回调函数,在用户进行解绑操作时会回调此函数,只需要将用户的绑定关系解除即可