本片文章主要講解一下,登陸的三種方式,以及數據庫的設計和業務流程的設計。
一、前期准備
1. 如果要支持短信驗證碼登陸:需要注冊第三方短信平台,並研究其集成接口。
2. 如果要支持第三方登陸(如QQ,微信,微博等):需要到對應的開放平台進行注冊,客戶端可以自己根據對應平台的集成接口進行處理,也可以用一些第三方平台,如友盟
二、數據庫設計
1.用戶基礎信息表user_bases
字段名 | 描述 | ||
---|---|---|---|
id | 用戶id,自增 | ||
username | 用戶名 | ||
password | 密碼 | ||
電子郵箱 | |||
phone | 手機號 | ||
nickname | 昵稱 | ||
... | 更多的基礎信息 |
2.用戶認證信息表user_auths(如果不涉及第三方登陸,不用創建這個表)
字段名 | 描述 | ||
---|---|---|---|
id | 自增 | ||
uid | 關聯用戶user_bases的id | ||
third_key | 三方登陸唯一標識 | ||
third_type | 三方登陸類型(例如wx:微信,qq:QQ登陸,wb:微博) |
3. 說明
3.1 說一說登陸的具體處理
(1)用戶名、手機號、email+密碼登陸:
直接調用接口,傳遞賬戶名和密碼,在user_bases表中查詢並匹配password(password需要做加密處理)
(2)手機號+短信驗證碼登陸,分為兩步:
a.發送驗證碼接口:客戶端:調用發送驗證碼接口,攜帶手機號碼。后台:調用第三方短信平台接口,返回驗證碼保存到redis中,並添加時效。
b.客戶端收到短信驗證碼后填寫,調用驗證碼登陸接口:首先驗證驗證碼,正確的話再根據手機號查詢用戶信息。
(3)第三方登陸:
a.客戶端首先調用三方平台提供的接口:返回唯一標識及用戶信息(昵稱,頭像等)。 b.調用后台提供的三方登陸接口(攜帶上步返回的數據): 首先需要在user_auths表中查詢third_key是否存在唯一標識,有:說明已經創建了用戶,沒有:未創建。 未創建時需要在user_auths中插入一條數據,然后再在user_auths中插入一條數據。
3.2 說一說一個賬號綁定多個三方賬號的具體處理
綁定多個三方賬號的前提是:已存在一個賬號。這樣綁定三方賬號時,只需在user_auths中插入一條數據即可(對應已存在的那個賬號),這樣就實現了一對多的關系。具體看下實現:
users | id | username | password | email | phone | nickname | ... | 1 | qaz123 |124568 |... |1523652.. | 張三 | ... | 2 | lijds963 |985236 |... |1856321.. | 李四 | ... user_auths | id | uid | third_key |third_type|... | 1 | 1 |*********** |weixin |... | 2 | 1 |*********** |qq |... | 3 | 2 |*********** |weixin |... | 4 | 2 |*********** |qq |... | 5 | 1 |*********** |weibo |...
三、時序圖,業務流程
下圖為三種登陸方式的時序圖:

四、涉及到的接口
1.用戶名、手機號、email+密碼登陸:
(1)用戶名、手機號、email+密碼登陸接口
2.手機號+短信驗證碼登陸:
(1)發送驗證碼接口 (2)調用第三方短信平台接口(后台直接與三方交互,與客戶端無關) (3)手機號+驗證碼登陸接口
3.三方登陸:
(1)通過三方提供的接口獲取唯一標識和相關用戶信息(客戶端調用,與后台無關)
(2)三方登陸接口
4.注冊
(1)手機號+驗證碼注冊
5.修改密碼,綁定,解除綁定
(1)修改密碼接口 (2)解除綁定,三方登陸接口 (3)綁定手機,三方登陸接口
說明:1.有些朋友可能會將三種登陸接口做成一個接口,也不是不行,但個人感覺這樣代碼能顯得更獨立,實現解耦,也方便修改。
2.如果第一次用app就直接用微信授權登錄,那時用戶表還沒有用戶數據,關系表中的uid獲取不到,應該如何處理?獲取不到uid的話,就說明沒有注冊,這時就要完成兩步,注冊加登陸