ホームページ >WeChat アプレット >ミニプログラム開発 >ユーザーの携帯電話番号を取得する WeChat アプレットを開発する方法
今回は、ユーザーの携帯電話番号を取得するための WeChat ミニ プログラムを開発する方法を説明します。 ユーザーの携帯電話番号を取得するための WeChat ミニ プログラムを開発するときの 注意事項 は何ですか。ここで実際のケースを見てみましょう。一見。
最近、ユーザーの携帯電話番号を取得する必要がある WeChat アプレットに取り組んでいます。具体的な手順は次のとおりです。 フローチャート: 1 まず、クライアントが wx.login を呼び出します。コールバック データには、openid (ユーザー固有の ID) と sessionkey (セッション キー) を取得するための jscode が含まれています。 2. jscode を取得したら、それをサーバーに送信し、サーバーはそれを使用して WeChat サーバーと通信し、openid と sessionkey を取得します。具体的な取得方法は次のとおりです: (1) 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; } }(2) 次に、このツール クラスを通じて WeChat サーバーとの接続を確立し、必要なデータを取得します:
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");ここでappid と Secret は両方とも独自のものです。開発者アカウントでクエリできます。js_code はクライアントによって送信されるため、返されたデータでセッション キーを取得できます。 3. サーバー A がセッションキーを取得すると、3rdSessionId をキー、sessionkey + openid を値として 3rdsession と呼ばれる乱数が生成され、redis または (2). 3rdSessionId を通じてユーザーの sessionkey と openid を検索します。 4. クライアントは 3rdSessionId を取得し、それをストレージにキャッシュします。
5. ユーザーの機密データの encryptedData は、wx.getUserIinfo を通じて取得できます。
6. クライアントは、encryptedData、3rdSessionId、および offset を一緒にサーバー A に送信します
7. サーバー A は、3rdSessionId に基づいてキャッシュから session_key を取得し、ユーザーの機密データを復号化します。 。
データを復号化するには 3 つのパラメータが必要です。つまり、
1、encryptedData (暗号文)
2、iv (ベクター)3、セッションキーである aesKey (キー)
復号化するときは、Base64 デコードする必要があります。上記の 3 つの変数:
byte[] encrypData = UtilEngine.decode(encData); byte[] ivData = UtilEngine.decode(iv); byte[] sessionKey = UtilEngine.decode(session_key);
次に、AES 復号化メソッドを使用して復号化します:
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); }
この記事のケースを読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP に関する他の関連記事に注目してください。中国語のサイトです!
推奨読書:
jQueryコードの最適化方法のまとめ360ブラウザ互換モードで不完全なページ表示に対処する方法以上がユーザーの携帯電話番号を取得する WeChat アプレットを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。