微信小程序授權(quán)登錄、解密unionId出錯

注意:沒有在微信開放平臺(不是公眾平臺)做開發(fā)者資質(zhì)認證的就不要浪費時間了,沒認證無法獲取unionId贸辈,認證費用300元/年,emmmm....

微信授權(quán)登錄流程

第一步:wx.login獲取 用戶臨時登錄憑證code

第二步:wx.getUserInfo獲取加密過的數(shù)據(jù)encryptedData和解密參數(shù)iv

第三步:把步驟一肠槽、二中的code裙椭、encryptedData、iv傳到開發(fā)者自己服務(wù)端

第三步:服務(wù)端獲取到code署浩、encryptedData揉燃、iv之后用get方法請求如下微信接口

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

appid:小程序appid

secret: 小程序密鑰

js_code: 第一步獲取的臨時登錄憑證code

grant_type:'authorization_code'

接口會返回 openid, session_key,注意:用戶已經(jīng)授權(quán)過的平臺還會返回unionId筋栋,如果你只是需要unionId炊汤,則到此為止

官方文檔說法如圖:

官方文檔說法

沒有授權(quán)過則用encryptedData、session_key弊攘、iv抢腐、appid、secret進行解密襟交,官方多語言解密示例下載鏈接:

unionId解密示例

包含c++ php python node

第四步:仿照示例解密后獲得unionId迈倍,想做什么就做什么了~

以下是授權(quán)登錄前端代碼

// 微信授權(quán)登錄

? authLogin () {

? ? wx.login({

? ? ? success: loginRes => {

? ? ? ? let code = loginRes.code??// 獲取用戶臨時code

? ? ? ? wx.getUserInfo({

? ? ? ? ? success: function (res) {

? ? ? ? ? ? let encryptedData = res.encryptedData??// 獲取加密數(shù)據(jù)

? ? ? ? ? ? let iv = res.iv? //??解密參數(shù)

? ? ? ? ? ? // 發(fā)送解密必要數(shù)據(jù)到服務(wù)端

? ? ? ? ? ? wx.request({

? ? ? ? ? ? ? url: 'http://localhost',

? ? ? ? ? ? ? methods: 'POST',

? ? ? ? ? ? ? data: {

? ? ? ? ? ? ? ? code: code,

? ? ? ? ? ? ? ? encryptedData: encryptedData,

? ? ? ? ? ? ? ? iv: iv

? ? ? ? ? ? ? },

? ? ? ? ? ? ? succeess: res => {

? ? ? ? ? ? ? ? // 服務(wù)端首先調(diào)用微信接口獲取session_key

? ? ? ? ? ? ? ? // 用戶已經(jīng)授權(quán)過的平臺會直接返回unionId

? ? ? ? ? ? ? ? // 沒有授權(quán)過則用session_key進行解密

? ? ? ? ? ? ? ? // 解密成功后服務(wù)端根據(jù)邏輯返回自定義信息

? ? ? ? ? ? ? }

? ? ? ? ? ? })

? ? ? ? ? }

? ? ? ? })

? ? ? }

? ? })

? }


以上步驟可行,但是微信更改用戶授權(quán)方式


未授權(quán)將直接調(diào)用失敗

需用button組件調(diào)用getUserInfo捣域,所以在這之前無法調(diào)用wx.login啼染。解決辦法,在頁面的onLoad生命周期里調(diào)用wx.login焕梅,獲取的code存入data以備需要的時候使用迹鹅,但是code失效時間為5分鐘,如果用戶停留頁面時間過長后點擊授權(quán)登錄贞言,此時的code已經(jīng)過期了斜棚,所以,獲取code的函數(shù)應(yīng)該每4分鐘左右調(diào)用一次该窗。

獲取code代碼如下:

onLoad: function (options) {

? ? this.getCodeTimer()

? },

getCodeTimer () {

? ? wx.login({

? ? ? success: res => {

? ? ? ? this.data.code = res.code

? ? ? ? setTimeout(() => {

? ? ? ? ? this.getCodeTimer()

? ? ? ? }, 4 * 60 * 1000)

? ? ? }

? ? })

? }

wxml按鈕授權(quán):

<button class="primary-bg" open-type='getUserInfo' bindgetuserinfo="authLogin">微信登錄</button>

授權(quán)登錄:

// 授權(quán)登錄

? authLogin(event) {

? ? if (event.detail.errMsg == 'getUserInfo:ok') {

? ? ? wx.showLoading()

? ? ? let reqData = {

? ? ? ? code: this.data.code,

? ? ? ? encryptedData: event.detail.encryptedData,

? ? ? ? iv: event.detail.iv

? ? ? }

? ? ? wx.request({

? ? ? ? url: 'http://localhost:8080',

? ? ? ? methods: 'POST',

? ? ? ? data: reqData,

? ? ? ? success: (res) => {

? ? ? ? ? console.log(res)

? ? ? ? ? ? // 請求完成

? ? ? ? }

? ? ? })

? ? } else {

? ? ? console.log('用戶拒絕授權(quán)')

? ? }

? }

到此弟蚀,完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酗失,一起剝皮案震驚了整個濱河市义钉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌级零,老刑警劉巖断医,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滞乙,死亡現(xiàn)場離奇詭異,居然都是意外死亡鉴嗤,警方通過查閱死者的電腦和手機斩启,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醉锅,“玉大人兔簇,你說我怎么就攤上這事∮菜#” “怎么了垄琐?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長经柴。 經(jīng)常有香客問我狸窘,道長,這世上最難降的妖魔是什么坯认? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任翻擒,我火速辦了婚禮,結(jié)果婚禮上牛哺,老公的妹妹穿的比我還像新娘陋气。我一直安慰自己,他們只是感情好引润,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布巩趁。 她就那樣靜靜地躺著,像睡著了一般淳附。 火紅的嫁衣襯著肌膚如雪议慰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天燃观,我揣著相機與錄音褒脯,去河邊找鬼。 笑死缆毁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的到涂。 我是一名探鬼主播脊框,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼践啄!你這毒婦竟也來了浇雹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤屿讽,失蹤者是張志新(化名)和其女友劉穎昭灵,沒想到半個月后吠裆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡烂完,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年抄谐,在試婚紗的時候發(fā)現(xiàn)自己被綠了勿锅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖咽安,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糖赔,我是刑警寧澤脊僚,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站柄冲,受9級特大地震影響吻谋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜现横,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一漓拾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧长赞,春花似錦晦攒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贩据,卻和暖如春栋操,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饱亮。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工矾芙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人近上。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓剔宪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壹无。 傳聞我的和親對象是個殘疾皇子葱绒,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容