|
大哥,你標題啥意思???沒看懂?。?!
是不是很多人看到這個標題沒明白啥意思?哈哈,我們都知道 QQ 登錄、微信登錄是吧,那如何做一個 Discuz! 登錄呢?
這回聽明白沒?沒錯,就是這個 Discuz! 登錄到另一個 Discuz! 的意思,聽著有點神奇吧!?
要說這個,我們要首先說下 X5 的一大特性 RESTful 接口。這是 X5 基于 oAuth2 標準設計的開放性接口。是的,開放性,意思是你可以自己隨意開發自己的 API 接口,而且無需寫代碼,只需寫一個 XML。關于如何開發 API 在這文章里我就不多說了,只給個鏈接,自己讀去哈“Discuz RESTful API: Discuz RESTful API 開發手冊”
在做今天我要做的事情之前,我們先準備2個X5,先分別看下2個 X5 的后臺
1.jpg (47.47 KB, 下載次數: 0)
下載附件
2024-10-29 09:10 上傳
站點 A 有 3 個用戶
2.jpg (66.59 KB, 下載次數: 0)
下載附件
2024-10-29 09:10 上傳
站點 B 只有一個 admin 用戶
我們拿站點 A 作為用戶中心,站點 B 用戶直接登錄站點 A 的用戶。
之前的文章“在 X5 下開發一個第三方登錄”我們提到了如何開發一個第三方登錄,這次我們加強下寫法,直接調用 RESTful 接口實現登錄
我們先打開站點 A 的 RESTful 后臺,上傳 discuz_restful_official_trial.xml 文件,然后添加一個應用
a1.jpg (53.58 KB, 下載次數: 0)
下載附件
2024-10-29 09:14 上傳
a2.jpg (104.11 KB, 下載次數: 0)
下載附件
2024-10-29 09:14 上傳
a3.jpg (66.9 KB, 下載次數: 0)
下載附件
2024-10-29 09:14 上傳
然后我們就可以開始寫代碼了,在站點 B 把前文的插件復制過來,打開 account.class.php,把 RESTful 基礎類準備好
b1.jpg (181.81 KB, 下載次數: 0)
下載附件
2024-10-29 09:15 上傳
還記得前文中 login($referer = '', $op = 0) 方法的這個簡易登錄框嗎?我們繼續用,不改它
b2.jpg (50.5 KB, 下載次數: 0)
下載附件
2024-10-29 09:17 上傳
我們直接修改下的身份校驗部分
b3.jpg (96.04 KB, 下載次數: 2)
下載附件
2024-10-29 09:18 上傳
這里,我們先調用 /token 接口獲取了 token,然后調用 /member/login 接口進行登錄。登錄成功后我們通過 $ret['data']['user'] 獲取身份。
作為范例,我們就不進行復雜的加密過程了,把登錄的身份信息傳遞給 callback 地址。
在 getLoginUser() 方法中我們把傳遞過來的數據入庫,沿用前文范例的邏輯就可以
b4.jpg (135.7 KB, 下載次數: 0)
下載附件
2024-10-29 09:20 上傳
我們測試下流程:
3.jpg (48.68 KB, 下載次數: 0)
下載附件
2024-10-29 09:23 上傳
登錄的時候點這個登錄入口
4.jpg (22.71 KB, 下載次數: 1)
下載附件
2024-10-29 09:23 上傳
彈出那個簡易的登錄框,我們輸入站點 A 的第三個用戶
5.jpg (33.96 KB, 下載次數: 0)
下載附件
2024-10-29 09:23 上傳
成功,站點 B 自動注冊了這個用戶并登錄成功,我們去后臺看一下
6.jpg (48.06 KB, 下載次數: 0)
下載附件
2024-10-29 09:23 上傳
2個人了,完成!
這就是最簡單的 Discuz! 登錄范例,喜歡不!
|
|