小程序之~~登錄后台代碼


微信小程序開發,弄清楚微信這個接口那些參數必須要有,並且各式正確,就能很快掌握。無非就是正確傳參數、調用接口、網絡訪問 

其一,在小程序中可以使用wx.getUserInfo這個接口獲取當前打開小程序用戶的信息。但是,我們知道小程序就只是前端而已,它的大小最大也就幾M而已,
所以在小程序中就僅有一些處理前端展示的邏輯代碼,大部分數據交互都是與我們的第三方服務器,它的所有數據都要來源於第三方的服務器,為什么要叫第三方,
我的認為是第二方也就是微信的服務器,也就是小程序所在的微信的服務器。 所以要做小程序,我們就必須把客戶的信息存儲在我們自己的服務器上,這個時候也就引入正文。
其二,小程序與我們第三方服務器交互,也就是我們需要編寫接口,實現小程序的登錄,保存用戶的信息,在我們的數據庫中。
(1)微信小程序調用微信接口wx.login,這時候微信會通過這個接口在success方法中返回參數code,我們學要這個參數去微信服務器換取這個用戶的唯一標識openid。
(2)然后在success中發起網絡請求,將code發送到我們編寫的接口中。
wx.login({ success: function (res) { if (res.code) { //發起網絡請求 wx.request({ url:'https://www.zhishidai.net/zsd/zsd/fff/login', data: { code: res.code }, success: function (a) { console.log("獲取用戶openid") console.log(a.data.obj.openid) that.globalData.openid = a.data.obj.openid } }) } else { console.log('獲取用戶登錄態失敗!' + res.errMsg) } } });
(3)接口代碼編寫,根據傳入得code,去微信服務器換取openid
@RequiresUser(required = false) @RequestMapping("/login") @ResponseBody public Result getCode(HttpServletRequest request, HttpSession session){ //獲取用戶登錄傳過來的code String code=request.getParameter("code"); System.out.println("code:"+code); PreCode pre= preCodeManager.findCode();//獲取第三方接口調用憑據 System.out.println("第三方接口調用憑據實體:"+pre); String grant_type="authorization_code";//固定值 //使用登錄憑證 code 獲取 session_key 和 openid。 Map<String,String> map=new HashMap<String,String>(); map.put("appid", appid);//小程序的appid map.put("component_appid",WeChatContants.AppId);//第三方appid map.put("js_code",code);//傳入得用戶code map.put("grant_type",grant_type); map.put("component_access_token",pre.getComponentAccessToken()); System.out.println("獲取openid的url參數map為:"+map); String result=""; try { result= HttpUtils.sendGet(WeChatContants.URL_WEIXIN_LOGIN_CODE,map); System.out.println("獲取openid結果為:"+result); } catch (Exception e) { e.printStackTrace(); } //解析返回的json數據,獲得OPPID Map<String,String> mps= JsonParse.getJsonStr(result); String openid=mps.get("openid"); String session_key=mps.get("session_key"); Result returnResult = null; if(openid!=null){ /*在此處添加自己的邏輯代碼,將openid保存在數據庫,或是,使用session_key去微信服務器換取用戶頭像、昵稱等信息。我在這里並沒有用到,因此我只保存了用戶的openid*/ } return returnResult; }



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM