微信小程序用户授权获取手机号(getPhoneNumber)
导读:收集整理的这篇文章主要介绍了微信小程序用户授权获取手机号(getPhoneNumber),觉得挺不错的,现在分享给大家,也给大家做个参考。 前言小程序有一个获取用户很便捷的api,就是通...
收集整理的这篇文章主要介绍了微信小程序用户授权获取手机号(getPhoneNumber),觉得挺不错的,现在分享给大家,也给大家做个参考。 前言
小程序有一个获取用户很便捷的api,就是通过getPhoneNumber获取用户的已经绑定微信的手机号码。有一点要大家注意,现在微信和注重用户体验,有些方法都是需要用户主动去触发才能调用的,比如getPhoneNumber。
实现思路:
1、通过wx.login获取code,从而获取到用户的oPEnID和sessionKey
2、通过getPhoneNumber获取encryptedData,iv
3、通过参数【encryptedData】 、【iv】 、【sessionKey】 请求后台解密获取用户手机号
直接上干货:
1、用户点击获取用户手机号码按钮
button class='pop_BTn' plain="true"open-type='getPhoneNumber' bindgetphonenumber="getPhoneNumber"> 获取用户手机号/button>
2、弹出授权图片:
3、通过解密获取手机号码
直接上代码:
wxLOGin: function() { //获取用户的openID和sessionKey VAR that = this; wx.login({ //获取code 使用wx.login得到的登陆凭证,用于换取openid success: (res) = > { wx.request({ method: "GET", url: 'https://xxxwx/wxlogin.do', data: { code: res.code, appId: "appIdSbcx", appKey: "appKeySbcx" } , header: { 'content-type': 'application/json' // 默认值 } , success: (res) = > { console.log(res); that.setData({ sessionKey: res.data.session_key } ); } } ); } } ); } getPhoneNumber: function(e) { //点击获取手机号码按钮 var that = this; wx.checkSession({ success: function() { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) var ency = e.detail.encryptedData; var iv = e.detail.iv; var sessionk = that.data.sessionKey; if (e.detail.errMsg == 'getPhoneNumber:fail user deny') { that.setData({ modalstatus: true } ); } else { //同意授权 wx.request({ method: "GET",url: 'https://xxx/wx/deciphering.do', data: { encrypdata: ency, ivdata: iv, sessionkey: sessionk } , header: { 'content-type': 'application/json' // 默认值 } , success: (res) = > { console.log("解密成功~~~~~~~将解密的号码保存到本地~~~~~~~~"); console.log(res); var phone = res.data.phoneNumber; console.log(phone); } , fail: function(res) { console.log("解密失败~~~~~~~~~~~~~"); console.log(res); } } ); } } , fail: function() { console.log("session_key 已经失效,需要重新执行登录流程"); that.wxlogin(); //重新登录 } } ); }
后台代码:
/*** 解密并且获取用户手机号码* @param encrypdata* @param ivdata* @param sessionkey* @param request* @return* @throws Exception */@RequestMapping(value = "deciphering", method = RequestMethod.GET)public @ResponseBody String deciphering(String encrypdata, String ivdata, String sessionkey,HttpServletRequest request) { byte[] encrypData = Base64.decode(encrypdata); byte[] ivData = Base64.decode(ivdata); byte[] sessionKey = Base64.decode(sessionkey); String str=""; try { str = decrypt(sessionKey,ivData,encrypData); } catch (Exception e) { // TODO Auto-generated catch blocke.PRintStackTrace(); } System.out.println(str); return str; } public static String decrypt(byte[] key, byte[] iv, byte[] encData) throws Exception { 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 new String(cipher.doFinal(encData),"UTF-8"); }
总结
到此这篇关于微信小程序用户授权获取手机号的文章就介绍到这了,更多相关小程序授权获取手机号内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:- 微信小程序如何通过用户授权获取手机号(getPhoneNumber)
- 微信小程序获取手机号授权用户登录功能
- 微信小程序用户授权、位置授权及获取微信绑定手机号
- 微信小程序如何获取用户手机号
- 微信小程序getPhoneNumber获取用户手机号
- 微信小程序获取用户信息及手机号(后端TP5.0)
- 微信小程序开发之获取用户手机号码(php接口解密)
- 微信小程序获取用户绑定手机号方法示例
- 微信小程序如何同时获取用户信息和用户手机号
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 微信小程序用户授权获取手机号(getPhoneNumber)
本文地址: https://pptw.com/jishu/594846.html