springboot获取小程序的openid

这个非常简单苦于网上资料杂乱,弄了半天

wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
if (res.code) {
wx.request({
url: ‘http://localhost:8080/cis’,
data: {
code: res.code
},
header: {
‘content-type’: ‘application/x-www-form-urlencoded’
},
success(res) {
console.log(“openid:” + res.data.openid);
if (res.data.openid != “” || res.data.openid != null) {
// 登录成功
wx.setStorageSync(“openid”, res.data.openid);//将用户id保存到缓存中
wx.setStorageSync(“session_key”, res.data.session_key);//将session_key保存到缓存中
} else {
// 登录失败
// TODO 跳转到错误页面,要求用户重试

            return false;
          }
        }
      })
    } else {
      console.log('获取用户登录态失败!' + res.errMsg)
    }
  }
})

在这里插入图片描述

code是从前端传过来的 每次不一样

然后是后端
先导两个依赖 一定要导进来

    <!--https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.49</version>
    </dependency>
    <!--http requset-->
    <dependency>
        <groupId>com.github.kevinsawicki</groupId>
        <artifactId>http-request</artifactId>
        <version>6.0</version>
    </dependency>

package cn.com.doone.sc.tx.cloud.dyb.system.controller.openId;

import cn.com.doone.sc.tx.cloud.dyb.common.tool.vo.RequestMessage;
import cn.com.doone.sc.tx.cloud.dyb.common.tool.vo.ResponseMessage;
import cn.com.doone.sc.tx.cloud.dyb.system.bean.po.code.CodePo;
import cn.com.doone.sc.tx.cloud.dyb.system.service.openId.WeChatService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**

  • @Auther: liufei

  • @Date: 2020/5/9 14:40

  • @Description:
    */
    @RestController
    public class WeChatController {

    @Autowired
    private WeChatService weChatService;

    @PostMapping("/getOpenid")
    public ResponseMessage getOpenid(@RequestBody RequestMessage requestMessage){
    String code = requestMessage.getBody().getCode();
    return weChatService.getOpenid(requestMessage);
    }
    }

package cn.com.doone.sc.tx.cloud.dyb.system.service.openId;

import cn.com.doone.sc.tx.cloud.dyb.common.tool.vo.RequestMessage;
import cn.com.doone.sc.tx.cloud.dyb.common.tool.vo.ResponseMessage;
import cn.com.doone.sc.tx.cloud.dyb.system.bean.po.code.CodePo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.kevinsawicki.http.HttpRequest;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**

  • @Auther: liufei

  • @Date: 2020/5/9 15:14

  • @Description:
    /
    @Service
    public class WeChatService {
    private final static String APPID=“wx76de200fe69b5878”;
    /
    private final static String APPID=“wxd7878dbde55f0312”;/
    private final static String SECRET_KEY=“9a21fd33bc58c12deb919371e6a69596”;
    /
    private final static String SECRET_KEY=“33c0aeeb77f5467a2a8d8e628ca697c7”;*/

    public ResponseMessage getOpenid(RequestMessage requestMessage) {
    Map<String, String> data = new HashMap<String, String>();
    data.put(“appid”, APPID);
    data.put(“secret”, SECRET_KEY);
    data.put(“js_code”, requestMessage.getBody().getCode());
    data.put(“grant_type”, “authorization_code”);
    String response = HttpRequest.get(“https://api.weixin.qq.com/sns/jscode2session”).form(data).body();
    System.out.println("Response was: " + response);
    JSONObject obj= JSON.parseObject(response);//将json字符串转换为json对
    return new ResponseMessage().success(obj);
    }
    }
    在这里插入图片描述
    最后就可以生成对应的sessionId 和openid了
    而且每次code不一样 ,可是openid都会一样 很神奇 以后研究一下

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值