andpods授权码订单号分享_微信OAuth2授权登录
前言
第三方登錄是應用開發中的常用功能,通過第三方登錄,我們可以更加容易使用戶登錄我們的應用或者網站。
很多網站都提供了第三方登錄的功能,在他們的官網中,都提供了如何接入第三方登錄的文檔。但是,假如不同的網站文檔差別極大,那么對于不了解第三方登錄的新手來說,實現一個支持多網站第三方登錄的功能可以說是極其痛苦。
實際上,大多數網站提供的第三方登錄都遵循OAuth協議,雖然大多數網站的細節處理都是不一致的,甚至會基于OAuth協議進行擴展,但大體上其流程是一定的。
本篇文章以微信網頁授權來介紹OAuth2.0中最經典最常用的一種授權模式:授權碼模式
OAuth是什么?
OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯系人列表),而無需將用戶名和密碼提供給第三方應用。
允許用戶提供一個令牌,而不是用戶名和密碼來訪問他們存放在特定服務提供者的數據。每一個令牌授權一個特定的網站(例如,視頻編輯網站)在特定的時段(例如,接下來的2小時內)內訪問特定的資源(例如僅僅是某一相冊中的視頻)。這樣,OAuth允許用戶授權第三方網站訪問他們存儲在另外的服務提供者上的信息,而不需要分享他們的訪問許可或他們數據的所有內容。
OAuth2.0官方文檔為:https://tools.ietf.org/html/rfc6749
為什么是OAuth2.0呢?其實是有1和1.1版本的,只是因為1和1.1版本流程比較復雜,應用不是很廣泛。
授權碼模式流程
授權碼模式(authorization code)是功能最完整、流程最嚴密的授權模式。它的特點就是通過客戶端的后臺服務器,與 "服務提供商" 的認證服務器進行互動。
整體大致過程如下:
OAuth2.0應用場景
我們這里主要模擬在微信公眾號中使用OAuth2.0進行授權,獲取用戶的基本信息的過程。
第1步:引導用戶進行授權:
當用戶希望使用第三方登錄進行登錄時,第三方應用會通過類似下圖的方式將用戶引導至授權頁面URL。
登錄方式如:需要獲取微信用戶信息時,需要引導用戶點擊請求如下授權頁面URL。
//open.weixin.qq.com/請求參數詳細介紹如下
| appid | 是 | 公眾號的唯一標識 |
| redirect_uri | 是 | 授權后重定向的回調鏈接地址, 請使用 urlEncode 對鏈接進行處理 |
| response_type | 是 | 返回類型,只能填寫code |
| scope | 是 | 應用授權作用域 snsapi_base (不彈出授權頁面,直接跳轉,只能獲取用戶openid) snsapi_userinfo (彈出授權頁面,可通過openid拿到昵稱、性別、所在地等。并且即使在未關注的情況下,只要用戶授權,也能獲取其信息 ) |
| state | 否 | 重定向后會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節 |
| #wechat_redirect | 是 | 無論直接打開還是做頁面302重定向時候,必須帶此參數 |
第2步:用戶授權
當我們點擊授權頁面URL時,會出現以下授權頁面
微信授權頁面該頁面由認證服務器提供,認證服務器會告訴用戶該第三方在認證服務器中提交的相關信息,以及授權后第三方應用能夠獲取哪些資源。在微信中,最基礎的認證可以訪問用戶的公共信息。
第3步:返回用戶授權碼(Code)
當用戶同意授權后,認證服務器將生成一個用戶授權碼(Code),此時認證服務器如何將用戶授權碼(Code)傳遞給第三方應用呢?
當我們向認證服務器提交應用信息時,通常需要填寫一個redirect_uri,在微信公眾號的接口權限中
點擊修改(授權回調域名配置規范為全域名并且不帶http)
服務器中填寫回調域名在第1步中,當我們引導用戶進入授權頁面時,也會附帶一個redirect_uri的信息。當認證服務器驗證兩個域名一致或在該域名的子域名下,便會通知瀏覽器跳轉到redirect_uri,同時會在后面附加用戶授權碼(code)的相關信息。授權后訪問的redirect_uri如下:
//xxx.com/oauth2?code=0217LHck2XfL3D0sbVfk2cFIck27LHcB&state=注意:code作為換取access_token的票據,每次用戶授權帶上的code將不一樣,code只能使用一次,5分鐘未被使用自動過期。
第4步:換取網頁授權access_token
要拿到認證服務器的授權,大致都需要以下幾個信息:
client_id 標識第三方應用的id,由認證服務器(微信)在第三方應用提交時頒發給第三方應用
client_secret 第三方應用和認證服務器之間的安全憑證,由認證服務器(微信)在第三方應用提交時頒發的
code 第3步中認證服務器返回的授權碼
state 由開發者給出的隨機碼,可選項
在微信中請求方法為
https:/當認證服務器拿到上述中的所有信息,驗證通過后,會將access_token返回給第三方應用。
注意:由于微信公眾號的secret和獲取到的access_token安全級別都非常高,必須只保存在服務器,不允許傳給客戶端。后續刷新access_token、通過access_token獲取用戶信息等步驟,也必須從服務器發起。
第5步:請求訪問用戶資源
拿到網頁授權驗證憑證(access_token)后,剩下的事情就很簡單了,資源服務器會提供一系列關于用戶資源的API,拿驗證憑證(access_token)訪問相應的API即可。
例如,在微信中,通過網頁授權access_token、openid獲取用戶信息的請求方法:
//api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID如果網頁授權驗證憑證(access_token)是正確的,此時資源服務器就會返回資源信息,此時整個OAuth2流程就結束了。
注:本文為Yolo原創,未經許可不得在任何平臺轉載,侵權必究。如需轉載,可關注微信公眾號:技術訓練營,在后臺留言,與作者聯系,取得許可才能轉載~
微信掃一掃,發現更精彩。
總結
以上是生活随笔為你收集整理的andpods授权码订单号分享_微信OAuth2授权登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s挂载目录_K8S中挂载目录引发的血
- 下一篇: 用计算机打cf,CF能用的特殊符号有什么