第三方登入是基於使用者在第三方平臺上(如微信,QQ, 百度)已有的賬號來快速完成系統的登入、註冊-登入等功能。
以微信的鑑權為例:
假如你的網站有一個掃碼登入的功能,會彈出一個由微信提供的二維條碼頁面,你需要用手機上的微信掃碼,操作一下,就可以完成登入。如這個連結:
嗯。從研發和使用上來說這是最快捷,也是目前大部分站點用的掃碼登入方式。但這個是依賴於微信開放平臺的功能,微信作為鑑權服務的提供方,有義務監管第三方的網站(你的網站相對於微信就是第三方),因此你需要有企業或組織的營業執照,經過認證,才有資格申請這個功能。(聽說認證還需要交錢,OMG)
對於個人來說,這顯然不是一個可行的方式。
那麼我們還有兩個選擇:
1. 微信公眾號鑑權:你的網頁在微信使用者端中被存取,通過跳轉至鑑權連結,彈出一個鑑權頁面,操作一下即可完成登入,請閱讀官方檔案
這是不需要認證的,我認為從微信的角度來說,微信使用者端的瀏覽器控制元件作為整合在微信裡的功能,有能力把控鑑權連結是從已在微信後臺登記的合法域名跳轉的,但是你的網站仍然要備案和走https協定
2. 微信小程式鑑權:這與微信公眾號鑑權類似,區別是微信小程式SDK提供了登入功能,小程式不需要認證,可獲取用資訊, 請閱讀官方檔案
首先使用者通過主動的確認授權,第三方平臺會生成一個登入憑證,根據第三方平臺的使用者憑證, 登入憑證,返回對談令牌和使用者在第三方賬號的唯一Id,令牌用於獲取第三方平臺的賬號資訊,比如頭像,暱稱,地址,電話號碼等,如果使用者是第一次登入,則可以用這些賬號資訊建立一個系統賬號。
登入憑證和令牌,都具有時效性
在微信鑑權中,相關的概念的具體為:
思考如何實現自己的登入邏輯:
公眾號的登入頁面,和微信小程式可以通過掃碼作為入口。再通過我們自己後端的鑑權服務,類似如下的流程
使用者的操作路徑:
經過對比與思考,我們用呼叫方式更簡單的微信小程式的鑑權方式。後端採用.Net6 + Abp.Zero快速搭建使用者系統,利用Abp.Zero整合的第三方登入功能快速實現微信登入。為了節省時間還需要一個現成的微信SDK庫。
接下來,開始專案搭建
使用 Abp.Zero 搭建第三方登入模組(二):伺服器端開發 - 林曉lx - 部落格園 (cnblogs.com)