微信小程序登录流程总结 目录 1.1. 前端调用wx.login 。。给后端传递一个code1 1.2. 开发者需要在开发者服务器后台调用 auth.code2Session,使用 code 换取

微信小程序登录流程总结

目录

1.1. 前端调用wx.login 。。给后端传递一个code 1

1.2. 开发者需要在开发者服务器后台调用 auth.code2Session,使用 code 换取 openid 和 session_key 等信息 1

1.2.1. 请求地址 2

1.2.2. 请求参数 2

2. 登录流程图 2

    1. 前端调用wx.login。。给后端传递一个code

wx.login({

success(res) {

if (res.code) {

// 发起网络请求

wx.request({

url: 'https://test.com/onLogin',

data: {

code: res.code

}

})

} else {

console.log('登录失败!' + res.errMsg)

}

}

})

    1. 开发者需要在开发者服务器后台调用auth.code2Session,使用 code 换取 openid 和 session_key 等信息

登录凭证校验。通过 wx.login() 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见 小程序登录

      1. 请求地址

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

      1. 请求参数

属性

类型

默认值

必填

说明

appid

string

小程序 appId

secret

string

小程序 appSecret

js_code

string

登录时获取的 code

grant_type

string

授权类型,此处只需填写 authorization_code

返回参数 参数 说明 openid 用户唯一标识 session_key 会话密钥 expires_in 过期时长(默认7200)

  1. Code

/springboothelloword

package springboothelloword;

import java.io.IOException;

import java.util.Map;

import javax.servlet.ServletRequest;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSON;

import com.google.common.collect.Maps;

@RestController

@EnableAutoConfiguration

public class Example {

// http://localhost:8080/jscode2session?code=xxxx

@RequestMapping("/jscode2session") // 登录

public String jscode2session(HttpServletRequest req) throws ClientProtocolException, IOException {

String code = req.getParameter("code");

String url = "https://api.weixin.qq.com/sns/jscode2session?app;

url=url.replaceAll("JSCODE", code);

// 执行get请求.

CloseableHttpResponse response = HttpClients.createDefault().execute(new HttpGet(url));

// 获取响应实体

String html = EntityUtils.toString(response.getEntity());

return html;

}

  1. 登录流程图