微信小程序获取用户手机号的实现方法及具体步骤介绍

2025-06-04
来源:万象资讯

本文详细阐述了微信小程序如何获取用户手机号码的操作步骤,具有较高的参考意义。对此感兴趣的朋友们不妨一阅,相信大家在阅读完本文后会有所收获。接下来,就让我们跟随小编一同深入了解吧。

微信小程序需要获取用户手机号的具体步骤如下:

流程图:

起初,客户端执行了wx.操作,随后返回的数据中包含了必要的元素,这些元素分别用于获取用户的唯一标识以及会话密钥。

接收到信息后,将其传递至服务器端,服务器端随即与微信服务器进行对接,以实现信息的获取。具体的获取方式包括:

(1)需要写一个工具类:

并能够接收和解析响应数据。 这是一个私有常量,其值为10000,代表超时时间的设定。  /**   * get访问   */   return request(url);   }  私有字符串数组request函数,接收一个连接URL参数。 初始化了一个字符串数组resultStr,包含两个空字符串元素。 初始化一个空的StringBuilder对象用于存储结果数据。 初始化HttpURLConnection对象conn为null。  try {  创建一个URL对象,名为url,通过传递connurl作为参数来初始化。 conn等于通过调用url对象的openConnection方法得到的HttpURLConnection对象。 conn.setMethod("GET");同时,对请求方式进行指定。   conn.setUseCaches(false);  conn.设置连接超时时间为mTimeout;   conn.connect();  conn获取到的响应代码被赋值给了变量resultCode。   InputStreamReader in;    if (resultCode == 200) { 

微信小程序获取openid和sessionkey_微信小程序云开发用户列表_微信小程序获取手机号步骤

创建一个新的InputStreamReader对象,将其初始化为从连接对象获取的输入流。 创建了一个名为buffer的BufferedReader对象,该对象通过传入的输入流in进行初始化。   String inputLine;  当(inputLine等于buffer.readLine())不等于null时,{ inputLine被加入到resultData数组之中。    resultData.append("\n");    }    buffer.close();    in.close();    }  resultStr的第一个元素被赋予resultData转换成字符串后的值。 resultStr[1]被设置为resultCode后面加上一个空字符串。  } catch (Exception e) {    e.printStackTrace();   } finally {    if (conn != null) {    conn.disconnect();    }   }   return resultStr;   }  }

随后,借助该工具类与微信服务器搭建起联系,进而获取所需信息。

定义字符串url,其值为"https://api.weixin.qq.com/sns/jscode2session",其中包含查询参数appid、secret和js_code。 jsCode添加了"&grant_type=authorization_code"参数。 connection通过发送请求,从url地址获取到了JSON格式的数据,并将这些数据存储到了名为res的字符串数组中。  System.out.println(res[0]);  JSONObject object等于JSON解析res数组中的第一个元素。 获取对象中的"openid"字段值,并将其赋值给变量stringOpenId。

微信小程序云开发用户列表_微信小程序获取openid和sessionkey_微信小程序获取手机号步骤

获取对象中的"session_key"字符串值,并将其赋值给session_key变量。

这些信息,包括客户端发送的,均可在开发者个人账号内查询,并能在返回的数据中得以获取。

服务器A接收到信息后,将创建一个随机数,我们将其命名为key,并通过加号将其缓存至或中;鉴于微信团队不推荐直接在网络上传输该信息,开发者需自行生成一个唯一的键值与相关联。其功能包括:(1)将信息发送回客户端,以保持小程序的登录状态。

(2)、通过找到用户和。

4、客户端拿到后缓存到,

5、通过wx.可以获取到用户敏感数据 。

6、客户端将、和偏移量一起发送到服务器A

7、服务器A根据从缓存中获取

8、在服务器A使用AES解密,从而实现用户敏感数据解密。

解密数据需要用到的参数有三个,分别是:

1、(密文)

2、iv(向量)

3、(密钥)也就是

在解密的时候要将上述三个变量做解码:

通过UtilEngine的解码功能,将encData转换成byte[]类型的加密数据,存储在变量encrypData中。 ivData变量被赋值为UtilEngine解码后的iv数据。 sessionKey变量通过UtilEngine的decode方法对session_key进行解码处理。

然后使用AES解密方法进行解密:

公开静态方法decrypt接受三个参数:密钥数组、初始化向量数组和加密数据数组。 抛出NoSuchPaddingException异常、NoSuchAlgorithmException异常、InvalidAlgorithmParameterException异常、 无效密钥异常、错误填充异常、非法块大小异常,具体表现为: AlgorithmParameterSpec类型的ivSpec对象是通过调用new关键字,并传入IvParameterSpec类型的iv参数来创建的。 Cipher对象cipher通过调用getInstance方法,获取了名为"AES/CBC/PKCS5Padding"的加密实例。 创建了一个名为keySpec的SecretKeySpec对象,该对象通过将key作为输入,并指定加密算法为AES来初始化。 cipher对象在解密模式下被初始化,同时指定了密钥规范和初始化向量规范。 执行cipher对象的doFinal方法,对加密数据encData进行处理并返回结果。 }

这样在返回的数据中就可以拿到用户的手机号。

分享