乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關(guān)于小程序登錄時獲取openId和unionId走過的坑

       昵稱21532077 2018-04-10

      目前的項(xiàng)目是在做小程序這方面的,接觸過的人應(yīng)該都知道,同一個微信開放平臺下的相同主體的App、公眾號、小程序的unionid是相同的,這樣就可以鎖定是不是同一個用戶。微信針對不同的用戶在不同的應(yīng)用下都有唯一的一個openId, 但是要想確定用戶是不是同一個用戶,就需要靠unionid來區(qū)分。一般自己的后臺都會有自己的一個用戶表,每個用戶有不同的userid。也就是說同一個用戶在同一個微信開放平臺下的相同主體的應(yīng)用對應(yīng)著相同的userid,unionid以及不同的openid。所以在用戶登錄進(jìn)來的時候,我們只能靠微信返回給我們的unionid去判斷是不是同一個用戶,在去關(guān)聯(lián)我們的用戶表,拿到對應(yīng)的userid。

      接下來就是在獲取unionid時的一些小問題分享一下:

      首先,前端調(diào)用wx.login的時候會返回一個code,這個code傳到后臺的時候,就需要去調(diào)用微信的接口(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code)傳入 code,appid,secret去換取到openid,session_key以及unionid等信息。這里就需要注意了。官方文檔上說的是

      如果用戶已經(jīng)關(guān)注公眾號,或者曾經(jīng)登錄過App或公眾號,則用戶打開小程序時,開發(fā)者可以直接通過wx.login獲取到該用戶UnionID,無須用戶再次授權(quán)。

      就是因?yàn)闆]有注意到這句話,所以后來改了好多東西,這里分為兩種情況,

      (1)用code換取的時候,返回了unionid,這樣就皆大歡喜了,你可以根據(jù)unionid以及openid去判斷該用戶有沒有用戶信息,從而獲取userid或者生產(chǎn)userid返回給前端

      (2)悲劇的情況,unionid返回為null,這時候你沒法兒關(guān)聯(lián)出用戶的userid。后來再去看官方文檔的時候,發(fā)現(xiàn)有針對這種情況的方法。就是需要前端再去調(diào)wx.getUserInfo()這個接口。這時候微信會返回很多數(shù)據(jù)(詳情見微信官方文檔:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html),這些數(shù)據(jù)里面有一個encryptedData,這個數(shù)據(jù)中就包含你需要的unionid以及其他的很多用戶信息啦。獲取到以后將encryptedData、加密算法的初始向量iv返回給后端,后端根據(jù)這兩個數(shù)據(jù)以及之前的session_key就可以解密出你需要的數(shù)據(jù)了。

      https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject

      App({
        onLaunch: function() {
          wx.login({
            success: function(res) {
              if (res.code) {
                //發(fā)起網(wǎng)絡(luò)請求
                wx.request({
                  url: 'https:///onLogin',
                  data: {
                    code: res.code
                  }
                })
              } else {
                console.log('登錄失敗!' + res.errMsg)
              }
            }
          });
        }
      })


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多