獲取小程序的openid與unionid

重要的事情說三遍:微信登錄能力優(yōu)化贸呢;微信登錄能力優(yōu)化;微信登錄能力優(yōu)化
昨天(4.24)下午微信發(fā)布了文章 微信登錄能力優(yōu)化拢军,此篇文章內(nèi)的登錄處理已經(jīng)不合適了楞陷,有空再改,先參考前半句的官方文檔茉唉。

需要發(fā)布的小程序基本都要用到openid固蛾,這里保存一下自己的代碼。
一種是不需要服務(wù)器的度陆,通過微信提供的接口簡單獲取openid魏铅;一種是有服務(wù)器的情況下,獲取openid和一些加密的信息坚芜,如unionid伸辟。

簡單獲取openid

經(jīng)大家吐槽豺总,了解之后,這里說明一下充坑,這里的簡單獲取,是指調(diào)試的時候可以使用稚配,正常的情況應(yīng)該是通過服務(wù)器來獲取
wx.login({
  success: function (res) {
    var code = res.code; // 復(fù)制給變量就可以打印了,醉了
    if (res.code) {
      wx.getUserInfo({
        success: function (res) {
          // userInfo 只存儲個人的基礎(chǔ)數(shù)據(jù)
          wx.setStorageSync('userInfo', res.userInfo);

          // 只獲取openid的話,自己就可以
          that.getOpenid(code);
        }
      })
    } else {
      console.log('獲取用戶登錄態(tài)失旇颈省!' + res.errMsg)
    }
  }
})

  // 自己獲取openid和session_key
  // 微信提供的接口糕非,其中appid和secret都是放在globalData中的
  getOpenid: function (code) {
    var that = this;
    wx.request({
      url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + that.globalData.appid + '&secret=' + that.globalData.secret + '&js_code=' + code + '&grant_type=authorization_code',
      data: {},
      method: 'GET',
      success: function (res) {
        var obj = {};
        obj.openid = res.data.openid;
        obj.expires_in = Date.now() + res.data.expires_in;
        obj.session_key = res.data.session_key; 
        wx.setStorageSync('openid', obj.openid);// 存儲openid  
      }
    });
  },

通過服務(wù)器獲取openid和unionid

wx.login({
  success: function (res) {
    var code = res.code; // 復(fù)制給變量就可以打印了蒙具,醉了
    if (res.code) {
      wx.getUserInfo({
        success: function (res) {
          // userInfo 只存儲個人的基礎(chǔ)數(shù)據(jù)
          wx.setStorageSync('userInfo', res.userInfo);

        // 請求自己的服務(wù)器,解密用戶信息 獲取unionId等加密信息
        wx.request({
          url: url.host + '/decodeUserInfo',//自己的服務(wù)接口地址
          method: 'POST',
          header: {
          'content-type': 'application/x-www-form-urlencoded'
          },
          data: {
          encryptedData: res.encryptedData,
          iv: res.iv,
          code: code,
          },
          success: function (data) {
            //4.解密成功后 獲取自己服務(wù)器返回的結(jié)果
            if (data.data.code == 200) {
              console.log('解密成功');
              var encryptInfo = data.data.data;
                    
              wx.setStorageSync('openid', encryptInfo.openId); // 單獨存儲openid
              wx.setStorageSync('encryptInfo', encryptInfo); // 存儲解密之后的數(shù)據(jù)
            } else {
              console.log('解密失敗')
            }
          } 
        },
        fail: function (res) {
          console.log(res);
          console.log('請求錯誤')
        }
      })
    } else {
      console.log('獲取用戶登錄態(tài)失斝喾省禁筏!' + res.errMsg)
    }
  }
})

最后,可以把這個方法給暴露出來衡招,讓其他界面調(diào)用

  // 給其他界面調(diào)用篱昔,用來獲取用戶信息,防止沒有獲取成功
  getUserInfo: function () {
    var that = this
    var userInfo = wx.getStorageSync('userInfo') || {};
    var openid = wx.getStorageSync('openid') || null;
    if (!userInfo.nickName || !openid) {
      that.getData();  // 將wx.login({}) 方法放入其中
    }
  },

其實獲取unionid的方法主要在后臺實現(xiàn)始腾,需要根據(jù)微信提供的方法去解密州刽,具體的解密文檔可以參考以下內(nèi)容: 微信小程序獲取用戶openid微信小程序聯(lián)盟:微信小程序之獲取并解密用戶數(shù)據(jù)(獲取openId、unionId)

在這之前可以先看一下微信的官方文檔浪箭,了解一下邏輯結(jié)構(gòu):微信官方文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穗椅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奶栖,更是在濱河造成了極大的恐慌房待,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驼抹,死亡現(xiàn)場離奇詭異桑孩,居然都是意外死亡,警方通過查閱死者的電腦和手機框冀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門流椒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人明也,你說我怎么就攤上這事宣虾。” “怎么了温数?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵绣硝,是天一觀的道長。 經(jīng)常有香客問我撑刺,道長鹉胖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮甫菠,結(jié)果婚禮上挠铲,老公的妹妹穿的比我還像新娘。我一直安慰自己寂诱,他們只是感情好拂苹,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痰洒,像睡著了一般瓢棒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丘喻,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天脯宿,我揣著相機與錄音,去河邊找鬼仓犬。 笑死嗅绰,一個胖子當(dāng)著我的面吹牛舍肠,可吹牛的內(nèi)容都是我干的搀继。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翠语,長吁一口氣:“原來是場噩夢啊……” “哼叽躯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肌括,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤点骑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谍夭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黑滴,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年紧索,在試婚紗的時候發(fā)現(xiàn)自己被綠了袁辈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡珠漂,死狀恐怖晚缩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情媳危,我是刑警寧澤荞彼,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站待笑,受9級特大地震影響鸣皂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一签夭、第九天 我趴在偏房一處隱蔽的房頂上張望齐邦。 院中可真熱鬧,春花似錦第租、人聲如沸措拇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丐吓。三九已至,卻和暖如春趟据,著一層夾襖步出監(jiān)牢的瞬間券犁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工汹碱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粘衬,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓咳促,卻偏偏與公主長得像稚新,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子跪腹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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

  • 背景小程序一個比較重要的能力就是獲取用戶信息褂删,也就是使用 wx.getUserInfo接口。我們發(fā)現(xiàn)幾乎所有的小程...
    未央大佬閱讀 15,469評論 0 23
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理冲茸,服務(wù)發(fā)現(xiàn)屯阀,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 給提問的開發(fā)者的建議:提問之前先查詢 文檔轴术、通過社區(qū)右上角搜索搜索已經(jīng)存在的問題难衰。 寫一個簡明扼要的標(biāo)題,并且...
    極樂叔閱讀 13,437評論 0 3
  • 財神節(jié)逗栽,中國傳統(tǒng)節(jié)日盖袭,農(nóng)歷七月二十二,是財帛星君李詭祖的祭祀紀(jì)念日祭陷。中國的民間習(xí)俗是正月初五拜財神...
    諸子百家之陳修遠閱讀 1,596評論 0 3
  • 5月3號的微機考試再難也就是30分鐘 5月9號的實驗考試再好玩也就是兩個罷了 5月12號的800米/1000再累也...
    戰(zhàn)王蘿莉閱讀 454評論 0 2