javascript
code换取微信openid_JSamp;微信_微信授权
微信api
授權(quán)demo
獲取openid --- snsapi_base
獲取用戶信息 --- snsapi_userinfo
1.前置條件
服務(wù)號(hào)(企業(yè)) -- 通過微信認(rèn)證
可以在微信公眾平臺(tái)-開發(fā)-接口權(quán)限查看
需要先配置一下授權(quán)回調(diào)域名(只能配置一個(gè))
開發(fā) - 接口權(quán)限 - 網(wǎng)頁服務(wù) - 網(wǎng)頁帳號(hào) - 網(wǎng)頁授權(quán)獲取用戶基本信息
請(qǐng)注意,這里填寫的是域名(是一個(gè)字符串),而不是URL,因此請(qǐng)勿加?http://?等協(xié)議頭;
2.步驟
除了步驟一,其他都必須由后臺(tái)請(qǐng)求
由于公眾號(hào)的secret和獲取到的access_token安全級(jí)別都非常高,必須只保存在服務(wù)器,不允許傳給客戶端。后續(xù)刷新access_token、通過access_token獲取用戶信息等步驟,也必須從服務(wù)器發(fā)起。
用戶同意授權(quán),獲取code(可以由前端來做)
通過code換取網(wǎng)頁授權(quán)access_token
刷新access_token(如果需要)
拉取用戶信息
3.具體實(shí)現(xiàn)(獲取用戶詳細(xì)信息snsapi_userinfo)
準(zhǔn)備一個(gè)空白頁面,在空白頁面進(jìn)行授權(quán)獲取code-用戶授權(quán)同意
是否是微信(是則繼續(xù),否則加載實(shí)際頁面結(jié)束)let ua = navigator.userAgent.toLowerCase(); let isWeixin = ua.indexOf('micromessenger') !== -1;
判斷是否拿到code(是則發(fā)起后臺(tái)拿到用戶信息步驟并加載實(shí)際頁面結(jié)束,否則繼續(xù))
3.為了解決只能配置一個(gè)授權(quán)回調(diào)域名,請(qǐng)求后臺(tái)做一個(gè)中間層
文檔
需要在分享的時(shí)候清空授權(quán)返回的code,僅需要分享的鏈接清空!獲取后臺(tái)分享配置的不需要!
5.為了防止用戶獲取到授權(quán)后刷新頁面code過期重復(fù)獲取用戶信息問題可以利用sessionStorage存儲(chǔ)一個(gè)標(biāo)識(shí)進(jìn)行識(shí)別
讓后臺(tái)傳一個(gè)微信統(tǒng)一授權(quán)地址,本地跳轉(zhuǎn)到后臺(tái)指定的路徑
后臺(tái)指定的路徑去跳轉(zhuǎn)到微信授權(quán)
同意授權(quán)后在跳回實(shí)際頁面
4.為了防止分享的時(shí)候獲取不到下一個(gè)人的授權(quán)信息
總結(jié)
以上是生活随笔為你收集整理的code换取微信openid_JSamp;微信_微信授权的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】选取二维列表的第一列
- 下一篇: 【Python】查找目标值在列表中的索引