


WeChat applet obtains user mobile phone number code sharing
This article mainly introduces in detail how the WeChat applet obtains the user's mobile phone number. It has certain reference value. Interested friends can refer to it. I hope it can help everyone.
I am currently working on a WeChat applet, which requires obtaining the user’s mobile phone number. The specific steps are as follows:
Flow chart:
1. First, the client calls wx.login, and the callback data contains jscode, which is used to obtain openid (user unique identification) and sessionkey (session key).
2. After getting the jscode, send it to the server. The server uses it to interact with the WeChat server to obtain the openid and sessionkey. The specific acquisition method is as follows:
(1) You need to write a HttpUrlConnection tool class:
public class MyHttpUrlConnection { private final int mTimeout = 10000; // 超时时间 /** * get访问 */ public String[] requestJson(String url) { return request(url); } private String[] request(String connurl) { String[] resultStr = new String[]{"", ""}; StringBuilder resultData = new StringBuilder(""); HttpURLConnection conn = null; try { URL url = new URL(connurl); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setUseCaches(false); conn.setConnectTimeout(mTimeout); conn.connect(); int resultCode = conn.getResponseCode(); InputStreamReader in; if (resultCode == 200) { in = new InputStreamReader(conn.getInputStream()); BufferedReader buffer = new BufferedReader(in); String inputLine; while ((inputLine = buffer.readLine()) != null) { resultData.append(inputLine); resultData.append("\n"); } buffer.close(); in.close(); } resultStr[0] = resultData.toString(); resultStr[1] = resultCode + ""; } catch (Exception e) { e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); } } return resultStr; } }
(2) Then establish a connection with the WeChat server through this tool class to obtain the desired data:
String url = "https://api.weixin.qq.com/sns/jscode2session?appid=""&secret=""&js_code=" + jsCode + "&grant_type=authorization_code"; String res[] = connection.requestJson(url); System.out.println(res[0]); JSONObject object = JSON.parseObject(res[0]); String openId = object.getString("openid"); String session_key = object.getString("session_key");
The appid and secret can be queried in your own developer account, and the js_code is sent by the client, so that the sessionkey can be obtained from the returned data.
3. After server A gets the sessionkey, it generates a random number we call 3rdsession, with 3rdSessionId as the key and sessionkey + openid as the value and cached in redis or memcached; because the WeChat team does not recommend directly storing the sessionkey in Transmitted over the network, the developer generates a unique key and associates it with the session key. Its functions are: (1) Return the 3rdSessionId to the client to maintain the mini program login state.
(2). Find user sessionkey and openid through 3rdSessionId.
4. The client gets the 3rdSessionId and caches it in storage.
5. User sensitive data encryptedData can be obtained through wx.getUserIinfo.
6. The client sends encryptedData, 3rdSessionId and offset together to server A
7. Server A obtains session_key from the cache based on 3rdSessionId
8. Use AES to decrypt encryptedData on server A to achieve user sensitivity Data decryption.
There are three parameters needed to decrypt data, namely:
1, encryptedData (ciphertext)
2, iv (vector)
3, aesKey (Key) That is, sessionkey
When decrypting, the above three variables must be Base64 decoded:
byte[] encrypData = UtilEngine.decode(encData); byte[] ivData = UtilEngine.decode(iv); byte[] sessionKey = UtilEngine.decode(session_key);
Then use the AES decryption method to decrypt:
public static byte[] decrypt(byte[] key, byte[] iv, byte[] encData) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException { AlgorithmParameterSpec ivSpec = new IvParameterSpec(iv); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); return cipher.doFinal(encData); }
In this way, the user's mobile phone number can be obtained in the returned data.
Related recommendations:
PHP to obtain a mobile phone number Regular expression writing
PHP obtains the location of mobile phone number through API_PHP tutorial
The above is the detailed content of WeChat applet obtains user mobile phone number code sharing. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft