日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微信小程序获取openid

發布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序获取openid 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

獲取openId (用戶唯一標識)和session_key

  • 第一步,獲取code
  • 調用wx.login(OBJECT) 獲取登錄憑證(code)進而換取用戶登錄態信息,包括用戶的唯一標識(openid)?及本次登錄的?會話密鑰(session_key)等。用戶數據的加解密通訊需要依賴會話密鑰完成。?

    注:調用 login 會引起登錄態的刷新,之前的 sessionKey 可能會失效

    示例代碼:

    //app.js App({onLaunch: function() {wx.login({success: function(res) {if (res.code) {//發起網絡請求wx.request({url: 'https://test.com/onLogin',data: {code: res.code}})} else {console.log('獲取用戶登錄態失敗!' + res.errMsg)}}});} })
  • 第二步,根據code獲取openid和session_key
  • 這是一個 HTTPS 接口,開發者服務器使用登錄憑證 code?獲取 session_key 和 openid。session_key 是對用戶數據進行加密簽名的密鑰。為了自身應用安全,session_key 不應該在網絡上傳輸。?

    接口地址:

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

    返回值說明:

    //根據code獲取openid等信息 wx.login({//獲取codesuccess: function (res) {var code = res.code; //返回codeconsole.log(code);var appId = '...';var secret = '...';wx.request({url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',data: {},header: {'content-type': 'json'},success: function (res) {var openid = res.data.openid //返回openidconsole.log('openid為' + openid);}})}})//正常返回的JSON數據包 {"openid": "OPENID","session_key": "SESSIONKEY","unionid": "UNIONID" } //錯誤時返回JSON數據包(示例為Code無效) {"errcode": 40029,"errmsg": "invalid code" }

    注意:?此時如果你未勾選項目中的“開發環境不效驗請求域名、TLS版本以及HTTPS證書”則會報錯

    到設置->項目設置->勾選:開發環境不校驗請求域名、TLS版本以及HTTPS證書

    ②接著你會發現報錯:不在一下合法域名列表,請參考文檔:?
    https://map.weixin.qq.com/debug/wxadoc/dev/api/network-request.html?
    意思是說:?
    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code?
    不是一個合法域名,在測試的時候是沒有問題的,但是要上線的時候就出現了問題,想著讓管理員把鏈接加到服務器域名里面,但是操作不允許。。。

    小程序服務器域名配置常見錯誤:?
    http://kf.qq.com/faq/1706236NjINj1706236VRZBR.html

    ③解釋:如果在配置服務器域名中填寫了“api.weixin.qq.com”會出現上述錯誤提示。出于安全考慮,為避免開發者將AppSecret放置在小程序的前端代碼內,平臺禁止設置此域名。 小程序的開發者密碼(AppSecret)是一個非常重要的字段,使用該密碼可以調用小程序的所有后臺接口。請不要將該字段放置在微信小程序的前端代碼中,因為微信手機客戶端容易被反編譯并輕松獲得Appsecret,造成重大的安全威脅。開發者應將Appsecret保存到后臺服務器中,通過服務器使用Appsecert獲取Accesstoken。微信公眾平臺小程序后臺的服務器地址設置也將禁止將“api.weixin.qq.com”域名的配置,所有對于“api.weixin.qq.com”域名下的接口請求請全部通過后臺服務器發起,請勿直接通過小程序的前端代碼發起。

    ④解決:所以解決辦法就是把code傳給后臺,讓后臺去請求微信的官方接口獲得openId和session-key。

    官網提供的獲取openid等信息,也如下圖所示:?
    ?
    3. 第三步,檢測用戶登錄狀態是否有效

    通過wx.checkSession(OBJECT)獲得的用戶登錄態擁有一定的時效性。用戶越久未使用小程序,用戶登錄態越有可能失效。反之如果用戶一直在使用小程序,則用戶登錄態一直保持有效。具體時效邏輯由微信維護,對開發者透明。開發者只需要調用wx.checkSession接口檢測當前用戶登錄態是否有效。登錄態過期后開發者可以再調用wx.login獲取新的用戶登錄態。?

    示例代碼:

    wx.checkSession({success: function(){//session 未過期,并且在本生命周期一直有效},fail: function(){//登錄態過期wx.login() //重新登錄....} })

    最后登錄時序圖:?

    總結

    以上是生活随笔為你收集整理的微信小程序获取openid的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。