返回

Vue+SpringBoot,微信授权扫码轻松获取用户信息

后端

创建基于 Vue + SpringBoot 的微信公众号授权系统

在互联网飞速发展的今天,微信已成为我们生活中必不可少的工具,集聊天、社交、支付、购物、游戏等功能于一体。随着微信的普及,企业和个人纷纷开发微信公众号,以推广产品和服务。

如果你也有开发微信公众号的计划,获取用户个人信息至关重要。这里推荐一个基于 Vue + SpringBoot 的微信公众号授权系统,简单易用,功能强大。

准备工作

开发前,你需要准备好以下内容:

  • 微信公众号
  • SpringBoot 项目
  • Vue 项目

开发步骤

1. 创建 SpringBoot 项目

使用 Spring Boot CLI 创建项目:

spring boot init wechat-auth

2. 添加依赖

在项目中添加必要依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

3. 创建 Controller

处理微信授权请求:

@RestController
public class WechatAuthController {

    // 微信授权回调地址
    private final String redirectUrl = "http://localhost:8080/wechat/auth/callback";

    // 获取 access_token 和 openid
    @GetMapping("/wechat/auth")
    public String auth() {
        // 拼接授权链接
        String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" +
                "appid=" + appId +
                "&redirect_uri=" + redirectUrl +
                "&response_type=code" +
                "&scope=snsapi_userinfo" +
                "&state=STATE#wechat_redirect";
        return "redirect:" + url;
    }

    // 使用 code 获取用户信息
    @GetMapping("/wechat/auth/callback")
    public String callback(@RequestParam String code) {
        // 获取 access_token
        String accessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?" +
                "appid=" + appId +
                "&secret=" + appSecret +
                "&code=" + code +
                "&grant_type=authorization_code";
        String accessTokenResponse = HttpUtil.get(accessTokenUrl);
        AccessToken accessToken = gson.fromJson(accessTokenResponse, AccessToken.class);

        // 获取用户信息
        String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?" +
                "access_token=" + accessToken.getAccessToken() +
                "&openid=" + accessToken.getOpenid();
        String userInfoResponse = HttpUtil.get(userInfoUrl);
        UserInfo userInfo = gson.fromJson(userInfoResponse, UserInfo.class);

        // 打印用户信息
        System.out.println(userInfo);
        return "success";
    }
}

4. 创建 Vue 项目

使用 Vue CLI 创建项目:

vue create wechat-auth

5. 添加路由

在 Vue 项目中添加路由:

// src/router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Auth from '@/views/Auth'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'auth',
      component: Auth
    }
  ]
})

6. 创建组件

在 Vue 项目中创建组件:

// src/views/Auth.vue
<template>
  <div>
    <a href="/wechat/auth">微信授权</a>
  </div>
</template>

<script>
export default {
  name: 'Auth'
}
</script>

7. 运行项目

  • SpringBoot 项目:mvn spring-boot:run
  • Vue 项目:npm run serve

效果展示

访问 http://localhost:8080/wechat/auth,页面显示微信授权按钮。点击按钮跳转到微信授权页面,授权成功后跳转回 http://localhost:8080/wechat/auth/callback,控制台输出获取到的用户信息。

常见问题解答

  1. 授权系统如何支持多种授权方式?

本系统支持扫码授权和静默授权等多种方式。

  1. 获取用户信息后,如何安全存储?

获取用户信息后,应采用安全的方式存储,例如加密或匿名化。

  1. 系统可以管理多个微信公众号吗?

支持多账号管理,可以管理多个微信公众号的授权信息。

  1. 授权页面可以自定义吗?

支持自定义授权页面,可根据需要定制样式。

  1. 系统会记录授权日志吗?

支持授权日志记录,可查看所有授权记录,以便跟踪用户行为。

总结

基于 Vue + SpringBoot 的微信公众号授权系统,简单易用,功能强大,可以帮助你轻松获取用户个人信息,了解用户需求,提供更好的服务。