小程序之~~登陆后台代码

微信小程序开发,弄清楚微信这个接口那些参数必需要有,而且各式正确,就能很快掌握。无非就是正确传参数、调用接口、网络访问

其一,在小程序中可使用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; }
相关文章
相关标签/搜索