微信小程序登录java后台接口
首先看一下微信小程序的开发文档:
微信小程序开发文档
步骤:
- 小程序端向微信接口服务发送请求——wx.login();获取到登录临时凭证code
- 小程序端拿着获取到的code向后台(这里是java服务端),使用wx.request()向自己的服务器发送请求(接口服务器自己定义)
- 后台服务器拿着小程序端传过来的code,以及自己的APPID,secretKey向微信方发送HttpGet请求
- 后台服务器获取到微信方返回回来的openId,session_key,然后加上自己本地的登录状态(本地自己定义),发送给小程序端
- 小程序端接收到后台传输过来的登录状态,保存到storage中以供以后使用。
具体实现步骤
小程序端
随便弄一个按钮,绑定下面的方法
//与后端通信 bindtest: function (){ wx.login({ success:res=>{ let _code=res.code; //获取到code之后再发送给后端 wx.request({ url: 'http://localhost:8080/login', data:{ code:_code, }, method:'POST', header: { 'content-type': 'application/x-www-form-urlencoded' // 默认是json }, success: function (res) { console.log(res.data); }, fail: function (res) { console.log(".....fail....."); } }) } }) }java服务器端
package com.kylin.wxtest.controller;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.kylin.wxtest.bean.Login;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;@RestControllerpublic class UserController { private static final long serialVersionUID=1L; private static final String APPID = "wxb88xxxxxxxx46140e"; private static final String SECRET = "19fa40c6xxxxxxxx6ae971267"; private String code; public String getCode() { return code; } public void setCode(String code) { this.code = code; } @RequestMapping(value = "/login") public String login(String code){ System.out.println(code); System.out.println("------------------------------------"); //微信那边的接口,grant_type=authorization_code是固定的 String url="https://api.weixin.qq.com/sns/jscode2session?appid="+APPID+ "&secret="+SECRET+"&js_code="+ code +"&grant_type=authorization_code"; //发送请求给微信后端 CloseableHttpClient httpClient= HttpClients.createDefault(); HttpGet httpGet=new HttpGet(url); InputStream inputStream=null; CloseableHttpResponse httpResponse=null; StringBuilder result=new StringBuilder(); try { httpResponse=httpClient.execute(httpGet); HttpEntity entity=httpResponse.getEntity(); inputStream=entity.getContent(); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); String line=""; while ((line=bufferedReader.readLine())!=null){ System.out.println(line); //这里需要使用fastjson来提取一下内容 JSONObject jsonObject= JSON.parseObject(line); Login login=new Login(); login.setOpenid(jsonObject.getString("openid")); login.setSession_key(jsonObject.getString("session_key")); result.append(login.getOpenid()+"hello_world"+login.getSession_key()); System.out.println(result.toString()); } } catch (IOException e) { e.printStackTrace(); } return result.toString(); }}总结
这样小程序端就可以获取到openId以及session_key;相当于授权成功!













