微信小程序登录-手机号授权并获取手机号
做微信小程序时,记录实现微信小程序登录
这里已经获取用户openId和sessionKey
1、通过按钮触发手机号授权
必须要通过按钮触发授权,open-type='getPhoneNumber'不能少
<button open-type='getPhoneNumber' @getphonenumber='onGetPhoneNumber'>手机号授权登录</button>
需要通过后台进行解析
onGetPhoneNumber(e) {if (e.detail.errMsg == "getPhoneNumber:fail user deny") {// 用户拒绝授权 // 拒绝授权后弹出一些提示 uni.showToast({icon: 'error',duration: 2000,title: '登录失败'})} else { // 允许授权 console.log('-加密的用户信息-', e.detail)// e.detail.encryptedData //加密的用户信息 // e.detail.iv //加密算法的初始向量 时要用到 // 调用接口获取手机号并修改小程序登录状态及相关信息this.$myRequest({url: '后台接口url(去后台解析加密的用户信息)',data: {encryptedData: e.detail.encryptedData,iv: e.detail.iv,sessionKey: that.sessionKey}}).then(rest => {console.log('返回的手机号', rest.message);})} }
后台解析springboot
AESUtils工具
public class AESUtils {public static boolean initialized = false;/*** AES解密** @param content 密文* @return* @throws InvalidAlgorithmParameterException* @throws NoSuchProviderException*/public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {initialize();try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");Key sKeySpec = new SecretKeySpec(keyByte, "AES");cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化byte[] result = cipher.doFinal(content);return result;} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (NoSuchPaddingException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();} catch (IllegalBlockSizeException e) {e.printStackTrace();} catch (BadPaddingException e) {e.printStackTrace();} catch (NoSuchProviderException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static void initialize() {if (initialized) {return;}Security.addProvider(new BouncyCastleProvider());initialized = true;}//生成ivpublic static AlgorithmParameters generateIV(byte[] iv) throws Exception {AlgorithmParameters params = AlgorithmParameters.getInstance("AES");params.init(new IvParameterSpec(iv));return params;} }
@GetMapping(value = "/getPhoneNumber")public Result getPhoneNumber(@RequestParam(required = true, value = "encryptedData") String encryptedData,@RequestParam(required = true, value = "iv") String iv,@RequestParam(required = true, value = "sessionKey") String sessionKey) throws UnsupportedEncodingException, InvalidAlgorithmParameterException, JSONException {Result result = new Result();//AESUtils微信获取手机号解密工具类AESUtils aes = new AESUtils();//调用AESUtils工具类decrypt方法解密获取json串byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv));//判断返回参数是否为空if (null != resultByte && resultByte.length > 0) {String jsons = new String(resultByte, "UTF-8");System.out.println(jsons);JSONObject json = new JSONObject(jsons);//json解析phoneNumber值String phoneNumber = json.getString("phoneNumber");System.out.println("phoneNumber:" + phoneNumber);return result;}return result.error("session_key:失败");}
微信小程序登录-手机号授权并获取手机号相关推荐
- 微信小程序云开发入门-快速获取手机号
一.前言 很多时候,我们需要获取用户的手机号码,一般是由用户自己输入,然后我们需要保证手机号的准确性比较高的话,可能还需要搭配一个验证码的功能来确保一定的准确性.这样实现起来的开发成本以及用户体验感都 ...
- jmeter进行微信小程序登录接口code的获取
公司新开发小程序功能,部分接口需要进行压测及并发,初次接触小程序,从最开始的登录就卡住了,原因在于登录接口中的code是实时变化的,百度了很久,终于参照这个大佬的文章([案例]用Jmeter做微信小程 ...
- 微信小程序登录及授权获取手机号
一.遇到的问题 1.获取手机号授权时报错:getPhoneNumber:fail no permission 原因是公众号没有进行企业认证 2.流程 1)登录拿session并保存 var that ...
- 微信小程序弹出用户授权弹窗,微信小程序引导用户授权,获取位置经纬度
我们在开发小程序时,有些操作必须让用户授权.比如我们获取用户位置,需要用户授权位置信息.授权操作我们需要给用户弹窗提示,在用户禁用某些权限时,又要引导用户去设置页开启相应权限.我们这里就以获取经纬度为 ...
- android微信登录获取微信账号,微信小程序--登录授权,一键获取用户微信手机号并登录...
一.前言 微信小程序登录流程时序 说明: 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器 开发者服务器以code换取 用户唯一标识openid 和 会话密钥sess ...
- 微信小程序登录方法,授权登录及获取微信用户手机号
✅作者简介: 大家好五一快乐,我是痴心阿文,你们的学友哥,今天给大家分享微信小程序登录方法!
- 微信小程序登录授权与授权手机号
文章目录 前言 微信小程序登录授权与授权手机号 一.登录授权 1. 发送 res.code 到后台换取 openId, sessionKey 二.授权手机号 官方规定 因为需要用户主动触发才能发起获取 ...
- UNIAPP---实现微信小程序登录授权和手机号授权(uniapp做微信小程序)
UNIAPP-实现微信小程序登录授权和手机号授权(uniapp做微信小程序) 描述:uniapp开发小程序,先授权用户信息后再出现手机号授权的页面进行手机号授权.完成后返回上一页面并把信息存入后台以及 ...
- uni-app微信小程序登录授权
uni-app微信小程序登录授权 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@getuserinfo的事件,把获取授权接 ...
最新文章
- 斯诺克之星 - 白沙台球杆 官方 及 派蔻台球杆 官方 www.snkstar.com - 最专业的台球杆销售网站...
- 【Python】刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...
- vs2005常用调试快捷键 (转载)
- 中国人寿构建国内首个Silverlight企业级应用
- c语言求e近似值精度在10e6,中石油2013秋季学期《C语言》补考在线适用于2014年4月...
- Linux下Eclipse给工程配置(附加库目录)
- 利用JS获取用户当前ip地址
- 嵌入式软件与设计 学习笔记总结一
- android极光推送回调方法,Flutter在Android中实现极光推送以及指定设备推送
- 从零开始设计RISC-V处理器——指令系统
- 计算机辅助故障树分析法,故障树分析法.doc
- 智慧医疗分支医院时钟系统(子母钟系统)
- 交换机和路由器有什么区别
- 使用UltraISO制作光盘镜像
- 办公一般用什么邮箱?办公邮箱价格哪个好?办公邮箱怎么登陆?
- 就业喜报|最高薪资15K,平均7216元,这个双十一不做“吃圭人”!
- 如何在字符串中加双引号
- Unity集成穿山甲后打包报错android:networkSecurityConfig , Picked up JAVA_TOOL_OPTIONS:-Dfile.encoding=UTF-8
- 先导课程 单片机_单片机课程教案-课程教案
- 环形光源matlab仿真,一种多角度环形光源的制作方法