Maison > Applet WeChat > Développement de mini-programmes > Comment obtenir le numéro de téléphone mobile de l'utilisateur via le mini-programme WeChat

Comment obtenir le numéro de téléphone mobile de l'utilisateur via le mini-programme WeChat

不言
Libérer: 2018-06-23 11:17:22
original
2995 Les gens l'ont consulté

Cet article présente principalement en détail comment l'applet WeChat obtient le numéro de téléphone mobile de l'utilisateur. Il a une certaine valeur de référence.

Je travaille actuellement sur une applet WeChat, vous. besoin d'obtenir le numéro de téléphone portable de l'utilisateur. Les étapes spécifiques sont les suivantes :

Organigramme :


1. wx.login, rappel Les données contiennent du jscode, qui est utilisé pour obtenir openid (identification unique de l'utilisateur) et sessionkey (clé de session).

2. Après avoir obtenu le jscode, envoyez-le au serveur. Le serveur l'utilise pour interagir avec le serveur WeChat afin d'obtenir l'openid et la clé de session. La méthode d'acquisition spécifique est la suivante :

(1) Vous devez écrire une classe d'outil HttpUrlConnection :

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; 
 } 
}
Copier après la connexion

(2) Utilisez ensuite cette classe d'outils Établissez une connexion avec le serveur WeChat et obtenez les données souhaitées :

 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");
Copier après la connexion

L'appid et le secret peuvent être interrogés dans votre propre développeur account, js_code Il est envoyé par le client, afin que la clé de session puisse être obtenue dans les données renvoyées.

3. Une fois que le serveur A a obtenu la clé de session, il génère un nombre aléatoire que nous appelons 3rdsession, avec 3rdSessionId comme clé et sessionkey + openid comme valeur et mis en cache dans Redis ou Memcached car l'équipe WeChat ne le recommande pas ; stockant directement la clé de session dans Transmis sur le réseau, le développeur génère une clé unique et l'associe à la clé de session. Ses fonctions sont : (1) Renvoyez le 3rdSessionId au client pour maintenir l'état de connexion du mini-programme.

(2). Recherchez la clé de session utilisateur et l'openid via 3rdSessionId.

4. Le client obtient le 3rdSessionId et le met en cache dans le stockage
5. Les données sensibles de l'utilisateur peuvent être obtenues via wx.getUserIinfo.
6. Le client envoie les données chiffrées, 3rdSessionId et offset ensemble au serveur A
7. Le serveur A obtient la clé de session du cache en fonction de 3rdSessionId
8. Utilisez AES pour déchiffrer les données chiffrées sur le serveur A, réalisant ainsi la sensibilité de l'utilisateur. décryptage des données.

Il y a trois paramètres nécessaires pour décrypter les données, à savoir :

1. Autrement dit, sessionkey


doit décoder en Base64 les trois variables ci-dessus lors du déchiffrement :

byte[] encrypData = UtilEngine.decode(encData); 
byte[] ivData = UtilEngine.decode(iv); 
byte[] sessionKey = UtilEngine.decode(session_key);
Copier après la connexion
<🎜 > Ensuite, utilisez le décryptage AES méthode pour décrypter :

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); 
}
Copier après la connexion
De cette manière, le numéro de téléphone portable de l'utilisateur peut être obtenu dans les données renvoyées.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos du code de l'applet WeChat pour télécharger des images sur le serveur


L'applet WeChat revient au multi -level page Méthode de mise en œuvre


Développement de l'applet WeChat liste d'amis liste de lettres sauter la position correspondante


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal