SpringBoot 实现App第三方微信登录(后端)

1.准备工作

2.授权流程说明

3. 获取access_token时序图:

4. maven依赖

<dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.0.1</version>
   </dependency>

   <dependency>
   	<groupId>org.springframework.boot</groupId>
   	<artifactId>spring-boot-devtools</artifactId>
   </dependency>
   <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
</dependency>

 <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.4</version>
  </dependency>

 <dependency>
      <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.2</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.38</version>
    </dependency>

5.在application.yml文件中配置你的

创建配置类

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix="weixinconfig")
public class WeixinLoginProperties {
	
	private String weixinappID; // 商户appid
	
	private String weixinappSecret; // 私钥 pkcs8格式的

	public String getWeixinappID() {
		return weixinappID;
	}

	public void setWeixinappID(String weixinappID) {
		this.weixinappID = weixinappID;
	}

	public String getWeixinappSecret() {
		return weixinappSecret;
	}

	public void setWeixinappSecret(String weixinappSecret) {
		this.weixinappSecret = weixinappSecret;
	}

}

6.第一步:请求CODE

这一步客户端会把code传过来 ,不用你操心

7.第二步:通过code获取access_token

获取第一步的code后,请求以下链接进行refresh_token:

刷新或续期access_token使用

获取用户个人信息(UnionID机制)

工具类

package io.renren.common.utils;

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

/**
 * 返回数据
 * 
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2016年10月27日 下午9:59:27
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
		put("msg", "success");
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	@Override
	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}
经验分享 程序员 微信小程序 职场和发展