spring boot寫的微信小程序登錄授權

Controller層 :

package com.searchmarket.controller;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.time.Duration;
import java.util.HashMap;
import java.util.Map;

/**
 * @program: SearchMarket
 * @description: 微信授權接口
 * @Author: 小白白
 * @create: 2020/02/20 - 22:43
 **/
@RequestMapping("wx")
@RestController
public class WeiXinController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @PostMapping("login")
    public Map<String, Object> wxLogin(@RequestParam("code")String code){
        Map<String, Object> result = new HashMap<>();
        result.put("status",200);

        String appid = "wx111111111111111f0e6";
        String secret = "11111111111111111111111111111";
        String url =    "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid +
                        "&secret="  + secret +
                        "&js_code=" + code   +
                        "&grant_type=authorization_code";
        String jsonData = this.restTemplate.getForObject(url,String.class);
        if (StringUtils.contains(jsonData,"errcode")){
            //校驗出錯
            result.put("status",500);
            result.put("msg","登錄失敗");
            return  result;
        }
        String md5Key = DigestUtils.md5Hex(jsonData + "SM_WX_LOGIN");

        String redisKey = "SM_LOGIN_" + md5Key;

        //規則:WX_LOGIN——
        this.redisTemplate.opsForValue().set(redisKey,jsonData, Duration.ofDays(30));
        result.put("ticket","SM_" + md5Key);

        return result;
    }
}

Config基礎配置類

package com.searchmarket.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @program: SearchMarket
 * @description: redis工具類
 * @Author: 小白白
 * @create: 2020/02/20 - 22:54
 **/
@Configuration
public class SM_Config {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
發佈了58 篇原創文章 · 獲贊 43 · 訪問量 3030
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章