search
HomeWeChat AppletMini Program DevelopmentHow to get user's mobile phone number through WeChat mini program

How to get user's mobile phone number through WeChat mini program

Jun 23, 2018 am 11:17 AM
WeChat appletPhone numberuser

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 am currently working on a WeChat applet. , you need to obtain the user's mobile phone number. The specific steps are as follows:

Flow chart:


1. First, the client calls wx.login and callback The 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 use this tool class to communicate with WeChat The server establishes a connection and obtains 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 js_code is sent by the client. Come over, so that the session key can be obtained in 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 on the network Upload transmission, 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 the 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

needs to Base64 decode the above three variables when decrypting:

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.

The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

About the code for WeChat applet to upload pictures to the server

The WeChat applet returns a multi-level page Implementation method

WeChat applet development friend list letter list jumps to the corresponding position

The above is the detailed content of How to get user's mobile phone number through WeChat mini program. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.