第三方登錄的原理
所謂第三方登錄,實質就是 OAuth 授權。用戶想要登錄 A 網站,A 網站讓用戶提供第三方網站的數據,證明自己的身份。獲取第三方網站的身份數據,就需要 OAuth 授權。
舉例來說,A 網站允許 GitHub 登錄,背后就是下面的流程。
1、A 網站讓用戶跳轉到 GitHub。
2、GitHub 要求用戶登錄,然后詢問"A 網站要求獲得 xx 權限,你是否同意?"
3、用戶同意,GitHub 就會重定向回 A 網站,同時發回一個授權碼。
4、A 網站使用授權碼,向 GitHub 請求令牌。
5、GitHub 返回令牌.
6、A 網站使用令牌,向 GitHub 請求用戶數據。
下面就是這個流程的代碼實現。
一個應用要求 OAuth 授權,必須先到對方網站登記,讓對方知道是誰在請求。
https://github.com/settings/applications/new
應用的名稱隨便填,主頁 URL 填寫http://localhost:8080
,跳轉網址填寫 http://localhost:8080/oauth/redirect
。
提交表單以后,GitHub 應該會返回客戶端 ID(client ID)和客戶端密鑰(client secret),這就是應用的身份識別碼。
https://github.com/login/oauth/authorize?client_id=35d221af61529dfba857&scope=user,repo:status