在 X5 中做一个 Discuz! 登录
2025/05/01 07:44:02
大哥,你标题啥意思!?没看懂啊!!
是不是很多人看到这个标题没明白啥意思?哈哈,我们都知道 QQ 登录、微信登录是吧,那如何做一个 Discuz! 登录呢?
这回听明白没?没错,就是这个 Discuz! 登录到另一个 Discuz! 的意思,听着有点神奇吧!?
要说这个,我们要首先说下 X5 的一大特性 RESTful 接口。这是 X5 基于 oAuth2 标准设计的开放性接口。是的,开放性,意思是你可以自己随意开发自己的 API 接口,而且无需写代码,只需写一个 XML。关于如何开发 API 在这文章里我就不多说了,只给个链接,自己读去哈“Discuz RESTful API: Discuz RESTful API 开发手册”
在做今天我要做的事情之前,我们先准备2个X5,先分别看下2个 X5 的后台
站点 A 有 3 个用户
站点 B 只有一个 admin 用户
我们拿站点 A 作为用户中心,站点 B 用户直接登录站点 A 的用户。
之前的文章“在 X5 下开发一个第三方登录”我们提到了如何开发一个第三方登录,这次我们加强下写法,直接调用 RESTful 接口实现登录
我们先打开站点 A 的 RESTful 后台,上传 discuz_restful_official_trial.xml 文件,然后添加一个应用
然后我们就可以开始写代码了,在站点 B 把前文的插件复制过来,打开 account.class.php,把 RESTful 基础类准备好
还记得前文中 login($referer = '', $op = 0) 方法的这个简易登录框吗?我们继续用,不改它
我们直接修改下的身份校验部分
这里,我们先调用 /token 接口获取了 token,然后调用 /member/login 接口进行登录。登录成功后我们通过 $ret['data']['user'] 获取身份。
作为范例,我们就不进行复杂的加密过程了,把登录的身份信息传递给 callback 地址。
在 getLoginUser() 方法中我们把传递过来的数据入库,沿用前文范例的逻辑就可以
我们测试下流程:
登录的时候点这个登录入口
弹出那个简易的登录框,我们输入站点 A 的第三个用户
成功,站点 B 自动注册了这个用户并登录成功,我们去后台看一下
2个人了,完成!
这就是最简单的 Discuz! 登录范例,喜欢不!
是不是很多人看到这个标题没明白啥意思?哈哈,我们都知道 QQ 登录、微信登录是吧,那如何做一个 Discuz! 登录呢?
这回听明白没?没错,就是这个 Discuz! 登录到另一个 Discuz! 的意思,听着有点神奇吧!?
要说这个,我们要首先说下 X5 的一大特性 RESTful 接口。这是 X5 基于 oAuth2 标准设计的开放性接口。是的,开放性,意思是你可以自己随意开发自己的 API 接口,而且无需写代码,只需写一个 XML。关于如何开发 API 在这文章里我就不多说了,只给个链接,自己读去哈“Discuz RESTful API: Discuz RESTful API 开发手册”
在做今天我要做的事情之前,我们先准备2个X5,先分别看下2个 X5 的后台
站点 A 有 3 个用户
站点 B 只有一个 admin 用户
我们拿站点 A 作为用户中心,站点 B 用户直接登录站点 A 的用户。
之前的文章“在 X5 下开发一个第三方登录”我们提到了如何开发一个第三方登录,这次我们加强下写法,直接调用 RESTful 接口实现登录
我们先打开站点 A 的 RESTful 后台,上传 discuz_restful_official_trial.xml 文件,然后添加一个应用
然后我们就可以开始写代码了,在站点 B 把前文的插件复制过来,打开 account.class.php,把 RESTful 基础类准备好
还记得前文中 login($referer = '', $op = 0) 方法的这个简易登录框吗?我们继续用,不改它
我们直接修改下的身份校验部分
这里,我们先调用 /token 接口获取了 token,然后调用 /member/login 接口进行登录。登录成功后我们通过 $ret['data']['user'] 获取身份。
作为范例,我们就不进行复杂的加密过程了,把登录的身份信息传递给 callback 地址。
在 getLoginUser() 方法中我们把传递过来的数据入库,沿用前文范例的逻辑就可以
我们测试下流程:
登录的时候点这个登录入口
弹出那个简易的登录框,我们输入站点 A 的第三个用户
成功,站点 B 自动注册了这个用户并登录成功,我们去后台看一下
2个人了,完成!
这就是最简单的 Discuz! 登录范例,喜欢不!