成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

微信小程序獲取用戶(hù)手機(jī)號(hào)的實(shí)現(xiàn)方法

這篇文章主要介紹了微信小程序獲取用戶(hù)手機(jī)號(hào)的實(shí)現(xiàn)方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),永豐企業(yè)網(wǎng)站建設(shè),永豐品牌網(wǎng)站建設(shè),網(wǎng)站定制,永豐網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,永豐網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

微信小程序需要獲取用戶(hù)手機(jī)號(hào)的具體步驟如下:

流程圖:

微信小程序獲取用戶(hù)手機(jī)號(hào)的實(shí)現(xiàn)方法

1、首先,客戶(hù)端調(diào)用wx.login,回調(diào)數(shù)據(jù)了包含jscode,用于獲取openid(用戶(hù)唯一標(biāo)識(shí))和sessionkey(會(huì)話(huà)密鑰)。

2、拿到j(luò)scode后,將其發(fā)送給服務(wù)端,服務(wù)端拿它與微信服務(wù)端做交互獲取openid和sessionkey。具體獲取方法如下:

(1)需要寫(xiě)一個(gè)HttpUrlConnection工具類(lèi):

public class MyHttpUrlConnection { 
 private final int mTimeout = 10000; // 超時(shí)時(shí)間 
 /** 
 * get訪(fǎng)問(wèn) 
 */ 
 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)然后通過(guò)這個(gè)工具類(lèi)與微信服務(wù)器建立連接,獲取想要的數(shù)據(jù):

 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都是自己開(kāi)發(fā)者賬號(hào)里可以查詢(xún)到的,js_code是客戶(hù)端發(fā)過(guò)來(lái)的,這樣在返回的數(shù)據(jù)中就可以獲取sessionkey。

3、服務(wù)器A拿到sessionkey后,生成一個(gè)隨機(jī)數(shù)我們叫3rdsession,以3rdSessionId為key,以sessionkey + openid為value緩存到redis或memcached中;因?yàn)槲⑿艌F(tuán)隊(duì)不建議直接將sessionkey在網(wǎng)絡(luò)上傳輸,由開(kāi)發(fā)者自行生成唯一鍵與sessionkey關(guān)聯(lián)。其作用是: (1)、將3rdSessionId返回給客戶(hù)端,維護(hù)小程序登錄態(tài)。

(2)、通過(guò)3rdSessionId找到用戶(hù)sessionkey和openid。

4、客戶(hù)端拿到3rdSessionId后緩存到storage,
5、通過(guò)wx.getUserIinfo可以獲取到用戶(hù)敏感數(shù)據(jù)encryptedData 。
6、客戶(hù)端將encryptedData、3rdSessionId和偏移量一起發(fā)送到服務(wù)器A
7、服務(wù)器A根據(jù)3rdSessionId從緩存中獲取session_key
8、在服務(wù)器A使用AES解密encryptedData,從而實(shí)現(xiàn)用戶(hù)敏感數(shù)據(jù)解密。

解密數(shù)據(jù)需要用到的參數(shù)有三個(gè),分別是:

1、encryptedData(密文)
2、iv(向量)
3、aesKey(密鑰)也就是sessionkey

在解密的時(shí)候要將上述三個(gè)變量做Base64解碼:

byte[] encrypData = UtilEngine.decode(encData); 
byte[] ivData = UtilEngine.decode(iv); 
byte[] sessionKey = UtilEngine.decode(session_key);

然后使用AES解密方法進(jìn)行解密:

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); 
}

這樣在返回的數(shù)據(jù)中就可以拿到用戶(hù)的手機(jī)號(hào)。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信小程序獲取用戶(hù)手機(jī)號(hào)的實(shí)現(xiàn)方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

文章名稱(chēng):微信小程序獲取用戶(hù)手機(jī)號(hào)的實(shí)現(xiàn)方法
鏈接分享:http://jinyejixie.com/article20/gggoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、ChatGPT、標(biāo)簽優(yōu)化云服務(wù)器、網(wǎng)站建設(shè)微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
外汇| 兰考县| 监利县| 枣阳市| 越西县| 时尚| 阿拉善左旗| 宜兰市| 舒兰市| 滨海县| 舒兰市| 平定县| 精河县| 马关县| 昌都县| 施秉县| 衡南县| 苏州市| 汉中市| 犍为县| 秀山| 夏邑县| 温泉县| 即墨市| 石泉县| 宁化县| 衡东县| 岐山县| 阳城县| 苍山县| 长葛市| 鄂州市| 云梦县| 博罗县| 汕尾市| 六枝特区| 乃东县| 治县。| 双牌县| 上犹县| 张家川|