Hi,are you ready?

准备好开始了吗?
那就与我们取得联系吧

有一个网站项目想和我们谈谈吗?您可以填写右边的表格,让我们了解您的项目需求,这是一个良好的开始,我们将会尽快与你取得联系。当然也欢迎您 给我们写信或是打电话,让我们听到你的声音!

Distance远近互联网络运营服务商

地 址:河北省石家庄市新华区华强广场7楼

电 话:14730427447

E-mail:815752879@qq.com

填写您的项目信息

微信小程序获取用户手机号详解

发布时间:2019-07-10T19:20:01

流程图:

php

1、首先,客户端调用wx.login,回调数据了包含js_code,用于获取openid(用户唯一标识)和sessionkey(会话密钥)。


2、拿到js_code后,将其发送给服务端,服务端拿它与微信服务端做交互获取openid和sessionkey。具体获取方法如下:

其中appid和secret都是自己开发者账号里可以查询到的,js_code是客户端发过来的,这样在返回的数据中就可以获取sessionkey。

3、服务器A拿到session_key后,生成一个随机数我们叫3rd_session,以3rdSessionId为key,以session_key + openid为value缓存到redis或memcached中;因为微信团队不建议直接将session_key在网络上传输,由开发者自行生成唯一键与session_key关联。其作用是:

(1)、将3rdSessionId返回给客户端,维护小程序登录态。

(2)、通过3rdSessionId找到用户session_key和openid。


4、客户端拿到3rdSessionId后缓存到storage,


5、通过wx.getUserIinfo可以获取到用户敏感数据encryptedData 。


6、客户端将encryptedData、3rdSessionId和偏移量一起发送到服务器A


7、服务器A根据3rdSessionId从缓存中获取session_key


8、在服务器A使用AES解密encryptedData,从而实现用户敏感数据解密。

解密数据需要用到的参数有三个,分别是:


1、encryptedData(密文)


2、iv(向量)


3、aesKey(密钥)也就是sessionkey


在解密的时候要将上述三个变量做Base64解码:

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

}

这样在返回的数据中就可以拿到用户的手机号。


远近互联前端小秦整理发布,希望能对学习技术的你有所帮助

远近互联专业提供网站建设、APP开发、网站优化、外贸网站SEO、微信运营的品牌整合营销服务让客户通过网络品牌建立与网络传播提高业绩。


【相关推荐】
返回列表
在线沟通

Are you interested in ?

  您感兴趣吗?

有关我们服务的更多信息,请联系

147 3042 7447 周经理

与我们合作

与远近互联合作,您将会得到更成熟的网络品牌建设服务。我们以客户至上,同时也相互挑战,力求呈现更好的网络品牌建设成果。

项目经理热线(周经理):

147 3042 7447

TOP

QQ客服

14730427447