Cette fois, je vais vous montrer comment développer un mini programme WeChat pour obtenir le numéro de téléphone portable d'un utilisateur. Quelles sont les précautions pour développer un mini programme WeChat pour obtenir le numéro de téléphone portable d'un utilisateur. est un cas pratique, jetons un coup d'oeil ensemble.
Je travaille actuellement sur une applet WeChat, qui nécessite l'obtention du numéro de téléphone portable de l'utilisateur. Les étapes spécifiques sont les suivantes :
Organigramme :
<.>
1 , Tout d'abord, le client appelle wx.login et les données de rappel contiennent du jscode, qui est utilisé pour obtenir l'openid (identification unique de l'utilisateur) et la 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'outils 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; } }
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");
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.
2, iv (vecteur)
3, aesKey (clé) Autrement dit, sessionkey
byte[] encrypData = UtilEngine.decode(encData); byte[] ivData = UtilEngine.decode(iv); byte[] sessionKey = UtilEngine.decode(session_key);
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); }
Un résumé des méthodes d'optimisation du code jQuery
Comment gérer l'affichage incomplet des pages dans le navigateur 360 mode de compatibilité
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!