微信小程序登录获取用户唯一标识OpenId,(SpringBoot项目)

这篇具有很好参考价值的文章主要介绍了微信小程序登录获取用户唯一标识OpenId,(SpringBoot项目)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序的登录,需要获取到用户的唯一标识OpenId,这里只涉及到后端代码,所以前提是前端申请了一个小程序并且有了appid和secret。

文章目录

一、微信小程序登录流程

二、代码实现

1.引入相关依赖

2.代码实现

实际项目经验分享


一、微信小程序登录流程

先上官方开发文档连接

小程序登录 | 微信开发文档

小程序openid,第三方服务,微信小程序,spring boot,maven

        上面就是微信的官方开发文档,在获取openid之前,需要小程序端调用官方提供的接口wx.login()去获取code(临时登入凭证),通过自己的后端请求,把code传给到服务端(自己的后端),服务端根据 小程序的appid+secret+js_code+grant_type去调用微信提供好的接口,获取到session_key和openid,openId就是用户在这个小程序中的唯一标识,拿到OpenId后,我们就能进行相关操作,处理好后返回数据给小程序端。

小程序openid,第三方服务,微信小程序,spring boot,maven

二、代码实现

1.引入相关依赖

        由于项目中需要使用到微信的第三方接口的调用,以及对返回json数据的解析,在这我强烈推荐由国人生产的HuTool工具包,里面有许多方便的接口,比如第三方接口的调用,Json数据的解析与转换,随机数字的生成;可以提高效率。

        <!--hutool具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.0</version>
        </dependency>

2.代码实现

代码如下:

代码中需要用到的参数要根据自己申请的小程序中的参数对应

package com.lyj.ylwechat.util;

import cn.hutool.core.codec.Base64;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import org.bouncycastle.jce.provider.BouncyCastleProvider;


import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Security;
import java.util.Arrays;
import java.util.HashMap;

public class WeChatUtil {

    public static JSONObject getSessionKeyOrOpenId(String code) {
        //微信小程序官方接口
        String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
        //接口所需参数
        HashMap<String, Object> requestUrlParam = new HashMap<>();
        //小程序appId
        requestUrlParam.put("appid", "wx08613a542bab");
        //小程序secret
        requestUrlParam.put("secret", "5f929f8894a2f7d58ef5d0ef1d6");
        //小程序端返回的code
        requestUrlParam.put("js_code", code);
        //默认参数,固定写死即可
        requestUrlParam.put("grant_type", "authorization_code");
        //发送post请求读取调用微信接口获取openid用户唯一标识
        String result = HttpUtil.get(requestUrl, requestUrlParam);
        JSONObject jsonObject = JSONUtil.parseObj(result);
        String openid = jsonObject.get("openid", String.class);
        return jsonObject;
    }

    public static JSONObject getUserInfo(String encryptedData, String sessionKey, String iv) throws Exception {
        // 被加密的数据
        byte[] dataByte = Base64.decode(encryptedData);
        // 加密秘钥
        byte[] keyByte = Base64.decode(sessionKey);
        // 偏移量
        byte[] ivByte = Base64.decode(iv);
        try {
            // 如果密钥不足16位,那么就补足.  这个if 中的内容很重要
            int base = 16;
            if (keyByte.length % base != 0) {
                int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
                byte[] temp = new byte[groups * base];
                Arrays.fill(temp, (byte) 0);
                System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
                keyByte = temp;
            }
            // 初始化
            Security.addProvider(new BouncyCastleProvider());
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
            SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
            AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
            parameters.init(new IvParameterSpec(ivByte));
            // 初始化
            cipher.init(Cipher.DECRYPT_MODE, spec, parameters);
            byte[] resultByte = cipher.doFinal(dataByte);
            if (null != resultByte && resultByte.length > 0) {
                String result = new String(resultByte, "UTF-8");
                return JSONUtil.parseObj(result);
            }
        } catch (Exception e) {
        }
        return null;
    }
}


实际项目经验分享

        上面仅仅是获取到了用户在申请小程序端中的唯一标识Openid,拿到OpenId等信息之后,可以把用户信息保存到数据库。将openid保存下来,与token(自定义登入状态)来进行关联,最后把小程序需要的数据返回给小程序端,以后就通过token来维护用户登入状态。文章来源地址https://www.toymoban.com/news/detail-531961.html

到了这里,关于微信小程序登录获取用户唯一标识OpenId,(SpringBoot项目)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】通过云函数获取用户openid

    1.pages同级目录下新建新文件夹,命名为cloudFunctions(其他名字也可以)。 2.project.config.json中添加以下内容,值为上一步创建的文件夹名字。编译一次后上一步创建的文件夹前图标就带“云”了。 3.app.js内的App中添加 1.右击cloudFunctions文件夹,点击【新建Node.js云函数】,命名为

    2024年02月10日
    浏览(62)
  • 关于微信小程序如何调用wx.login获取openId和用户信息

    首先我们需要在微信开发小工具获取code临时登录凭证,下面是js文件也就是一些需要调用的函数。需要做这个的话我们需要上微信公众平台获取AppId和AppSecret 这个是页面 这是获取到的code 本来获取用户信息是getUserInfo但是微信官方已经把那个接口废弃了,只能获取到一些默认

    2024年02月11日
    浏览(53)
  • 获取微信小程序用户的code、openid、session_key

    1、安装微信开发者工具: 在你的电脑上安装微信小程序的开发者工具。你可以从微信开放平台官网下载并安装适用于你的操作系统的开发者工具。 2、注册微信开放平台账号: 如果你还没有微信开放平台账号,需要注册一个。你可以在微信开放平台注册页面进行注册。 3、创

    2024年02月03日
    浏览(48)
  • 微信小程序通过web-view网页授权获取用户公众号OpenID

    第一步: 通过该地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfot=sandbox/index 获取到微信公众号测试号AppID与appsecret (测试公众号可以测试使用,个人公众号不允许使用。微信认证服务号可以使用,微信认证订阅号不可以使用)。 接口权限查看链接: https://developers.weix

    2024年02月08日
    浏览(82)
  • 2023年最新微信小程序获取用户openid、头像昵称的填写能力和方法原生写法

    大家好,下面是我身为小白分享给小白哈, 不懂就问相互学习共同进步! 亲测自用原生代码,感谢大神指点赐教鼓励勿喷; 只需9个一键复制粘贴步骤一气呵成; 先来 本文最终主要实现效果 : 获取微信小程序用户头像昵称的填写能力和方法原生写法 一:先捋一捋思路逻辑

    2024年02月08日
    浏览(83)
  • 微信小程序使用openid生成唯一数字ID(哈希算法)

    引入 crypto-js 库和云函数所需的模块。 定义了一个 convertToUniqueDigits 函数,接收两个参数:需要转换的字符串和返回的结果的数字位数。         在函数内部,使用 sha256 函数将字符串转换为哈希值,然后将哈希值转换为数字,并将结果映射到指定的位数。         如

    2024年02月16日
    浏览(42)
  • 微信小程序中使用UUID创建唯一标识

    1,在小程序根目录下的utils文件夹创建一个名为uuid.js文件,将下列代码粘贴上去: const uuid = function () {   var s = [];   var hexDigits = \\\"0123456789abcdef\\\";   for (var i = 0; i  36; i++) {     s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);   }   s[14] = \\\"4\\\";    s[19] 

    2024年02月04日
    浏览(45)
  • 微信小程序登录,解决无法获取用户信息方法

    在上面的代码中,首先定义了应用的AppID和AppSecret。然后,实现了获取微信用户access_token的方法getAccessToken()和获取微信用户信息的方法getUserInfo()。其中,getAccessToken()方法需要传入微信小程序登录时获取的code,会返回一个包含access_token和openid的Map;getUserInfo()方法需要传入用户

    2024年02月11日
    浏览(66)
  • 【微信小程序】使用微信API获取用户信息实现登录

    实现步骤 1. 通过定义button按钮点击事件,点击登录后触发事件 2. 通过 wx.getUserProfile API 调用用户信息 3. 获取成功就将数据存储到本地存储中,使用 wx.setStorageSync(\\\'user\\\', user) 4. 存储完获取本地数据 wx.getStorageSync(\\\'user\\\') 5. 页面渲染数据 实现登录 wxml页面 js页面  wxss页面

    2024年02月05日
    浏览(51)
  • java对接微信小程序(登录&获取用户信息)

    用户通过小程序登录,进入到平台系统,进行各功能操作; 解决方案: 首先通过对接小程序,用户通过小程序登录及授权获取用户信息,后端调用接口获取微信用户信息,进行保存到数据库,然后返回token给前端(实际在这里相当于用户的一个注册及登录),前端使用该to

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包