1.前置條件
- 服務號(企業) -- 通過微信認證
- 可以在微信公眾平台-開發-接口權限查看
- 需要先配置一下授權回調域名(只能配置一個)
- 開發 - 接口權限 - 網頁服務 - 網頁帳號 - 網頁授權獲取用戶基本信息
- 請注意,這里填寫的是域名(是一個字符串),而不是URL,因此請勿加 http:// 等協議頭;
2.步驟
除了步驟一,其他都必須由后台請求
由於公眾號的secret和獲取到的access_token安全級別都非常高,必須只保存在服務器,不允許傳給客戶端。后續刷新access_token、通過access_token獲取用戶信息等步驟,也必須從服務器發起。
- 用戶同意授權,獲取code(可以由前端來做)
- 通過code換取網頁授權access_token
- 刷新access_token(如果需要)
- 拉取用戶信息
3.具體實現(獲取用戶詳細信息snsapi_userinfo)
-
准備一個空白頁面,在空白頁面進行授權獲取code-用戶授權同意
-
是否是微信(是則繼續,否則加載實際頁面結束)
let ua = navigator.userAgent.toLowerCase(); let isWeixin = ua.indexOf('micromessenger') !== -1;
-
判斷是否拿到code(是則發起后台拿到用戶信息步驟並加載實際頁面結束,否則繼續)
3.為了解決只能配置一個授權回調域名,請求后台做一個中間層
文檔- 讓后台傳一個微信統一授權地址,本地跳轉到后台指定的路徑
- 后台指定的路徑去跳轉到微信授權
- 同意授權后在跳回實際頁面
4.為了防止分享的時候獲取不到下一個人的授權信息
- 需要在分享的時候清空授權返回的code,僅需要分享的鏈接清空!獲取后台分享配置的不需要!
5.為了防止用戶獲取到授權后刷新頁面code過期重復獲取用戶信息問題 - 可以利用sessionStorage存儲一個標識進行識別
以上內容,如有錯誤請指出,不甚感激。
如需轉載,請注明出處