微信小程序登录Java后台接口

微信小程序登录java后台接口

首先看一下微信小程序的开发文档:
微信小程序开发文档

步骤:

  1. 小程序端向微信接口服务发送请求——wx.login();获取到登录临时凭证code
  2. 小程序端拿着获取到的code向后台(这里是java服务端),使用wx.request()向自己的服务器发送请求(接口服务器自己定义)
  3. 后台服务器拿着小程序端传过来的code,以及自己的APPID,secretKey向微信方发送HttpGet请求
  4. 后台服务器获取到微信方返回回来的openId,session_key,然后加上自己本地的登录状态(本地自己定义),发送给小程序端
  5. 小程序端接收到后台传输过来的登录状态,保存到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;

@RestController
public 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;相当于授权成功!

你可能感兴趣的:(微信小程序)