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