Cet article présente principalement en détail comment l'applet WeChat obtient le numéro de téléphone portable de l'utilisateur. Elle a une certaine valeur de référence. J'espère que cela pourra aider tout le monde.
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 :
<.>
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.
Lors du décryptage, les trois variables ci-dessus doivent être décodées en Base64 :
, puis utiliser la méthode de décryptage AES pour décrypter :
byte[] encrypData = UtilEngine.decode(encData); byte[] ivData = UtilEngine.decode(iv); byte[] sessionKey = UtilEngine.decode(session_key);
De cette manière, le numéro de téléphone mobile de l'utilisateur peut être obtenu dans les données renvoyées.
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); }
Exemple d'applet WeChat obtenant un numéro de téléphone mobile, fonction de connexion d'utilisateur autorisé
PHP obtenant un numéro de téléphone mobile Écriture d'expressions régulières
PHP obtient l'emplacement du numéro de téléphone mobile via le didacticiel API_PHP
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!