IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> springboot 微信小程序获取用户手机号 最新方式 -> 正文阅读

[移动开发]springboot 微信小程序获取用户手机号 最新方式

springboot 微信小程序获取用户手机号

直接开整!!!
现在有两种方式获取微信用户的手机号

第一种

这种方式比较旧了,也能获取到手机号,但不建议使用。
1.前端调用wx.login()(官方的方法,直接在代码中调用就可以)方法,把得到的code传给后端,后端在通过这个code和appid,secret获取sessionkey和openid。ps:这里需要把获取到的sessionkey和openid存入redis,sessionkey之后会用到,他是解密出手机号的钥匙。
2.前端在调用 getPhoneNumber ()方法(这个也是官方的方法),会得到如下数据
在这里插入图片描述
这时在把encryptedData和iv传给后端,后端在处理这两个参数和上一步得到的sessionkey,解密出用户的手机号。

第二种

这是目前最新的获取方式。
前端调用getPhoneNumber () ,这时只需要把得到数据中的code传给后端,后端通过appid和secret访问https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}获取刷新token,然后再携带这个刷新token和前端传给的code调用https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={0}就可以获取用户的手机号了,不需解密操作。这两种方式都可以获取用户的手机号,但第一种有点麻烦,还需要解密。毕竟是有新的而且是更简洁的方式,还是用新的方式比较好,旧的之后不知道会不会被官方弃用。

完整代码

两种方式我都写了,这里只提供第二种方式的完整代码供大家参考

这里需要fastjson和hutool两个依赖,放入pom文件中下载即可

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.72</version>
        </dependency>
<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.6.5</version>
        </dependency>

appid和secret放在yml文件中
在这里插入图片描述

代码:

    @Value("${weixin.appid}")
    private String appid;

    @Value("${weixin.secret}")
    private String secret;

public Object getPhoneNumber(String code) {

        String result = null;
        try {
            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
            String replaceUrl = url.replace("{0}", appid).replace("{1}", secret);
            String res = HttpUtil.get(replaceUrl);
            JSONObject json_token = JSON.parseObject(res);
            String access_token = json_token.getString("access_token");

            String urlTwo = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={0}";
            String replaceUrlTwo = urlTwo.replace("{0}",access_token);
            HashMap<String, Object> requestParam = new HashMap<>();
            // 手机号调用凭证
            requestParam.put("code", code);
            String jsonStr = JSON.toJSONString(requestParam);
            HttpResponse response = HttpRequest.post(replaceUrlTwo)
                    .header(Header.CONTENT_ENCODING, "UTF-8")
                    // 发送json数据需要设置contentType
                    .header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded")
                    .body(jsonStr)
                    .execute();
            if (response.getStatus() == HttpStatus.HTTP_OK) {
                result = response.body();
            }
        } catch (HttpException e) {
            e.printStackTrace();
        }
        return JSONObject.parseObject(result).get("phone_info");
    }

结果

在这里插入图片描述
个人码云有一些demo

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:08:24  更:2022-09-24 21:10:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:20:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码