做微信小程序时,记录实现微信小程序登录

这里已经获取用户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:失败");}

微信小程序登录-手机号授权并获取手机号相关推荐

  1. 微信小程序云开发入门-快速获取手机号

    一.前言 很多时候,我们需要获取用户的手机号码,一般是由用户自己输入,然后我们需要保证手机号的准确性比较高的话,可能还需要搭配一个验证码的功能来确保一定的准确性.这样实现起来的开发成本以及用户体验感都 ...

  2. jmeter进行微信小程序登录接口code的获取

    公司新开发小程序功能,部分接口需要进行压测及并发,初次接触小程序,从最开始的登录就卡住了,原因在于登录接口中的code是实时变化的,百度了很久,终于参照这个大佬的文章([案例]用Jmeter做微信小程 ...

  3. 微信小程序登录及授权获取手机号

    一.遇到的问题 1.获取手机号授权时报错:getPhoneNumber:fail no permission 原因是公众号没有进行企业认证 2.流程 1)登录拿session并保存 var that ...

  4. 微信小程序弹出用户授权弹窗,微信小程序引导用户授权,获取位置经纬度

    我们在开发小程序时,有些操作必须让用户授权.比如我们获取用户位置,需要用户授权位置信息.授权操作我们需要给用户弹窗提示,在用户禁用某些权限时,又要引导用户去设置页开启相应权限.我们这里就以获取经纬度为 ...

  5. android微信登录获取微信账号,微信小程序--登录授权,一键获取用户微信手机号并登录...

    一.前言 微信小程序登录流程时序 说明: 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器 开发者服务器以code换取 用户唯一标识openid 和 会话密钥sess ...

  6. 微信小程序登录方法,授权登录及获取微信用户手机号

    ✅作者简介: 大家好五一快乐,我是痴心阿文,你们的学友哥,今天给大家分享微信小程序登录方法!

  7. 微信小程序登录授权与授权手机号

    文章目录 前言 微信小程序登录授权与授权手机号 一.登录授权 1. 发送 res.code 到后台换取 openId, sessionKey 二.授权手机号 官方规定 因为需要用户主动触发才能发起获取 ...

  8. UNIAPP---实现微信小程序登录授权和手机号授权(uniapp做微信小程序)

    UNIAPP-实现微信小程序登录授权和手机号授权(uniapp做微信小程序) 描述:uniapp开发小程序,先授权用户信息后再出现手机号授权的页面进行手机号授权.完成后返回上一页面并把信息存入后台以及 ...

  9. uni-app微信小程序登录授权

    uni-app微信小程序登录授权 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@getuserinfo的事件,把获取授权接 ...

最新文章

  1. 斯诺克之星 - 白沙台球杆 官方 及 派蔻台球杆 官方 www.snkstar.com - 最专业的台球杆销售网站...
  2. 【Python】刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...
  3. vs2005常用调试快捷键 (转载)
  4. 中国人寿构建国内首个Silverlight企业级应用
  5. c语言求e近似值精度在10e6,中石油2013秋季学期《C语言》补考在线适用于2014年4月...
  6. Linux下Eclipse给工程配置(附加库目录)
  7. 利用JS获取用户当前ip地址
  8. 嵌入式软件与设计 学习笔记总结一
  9. android极光推送回调方法,Flutter在Android中实现极光推送以及指定设备推送
  10. 从零开始设计RISC-V处理器——指令系统
  11. 计算机辅助故障树分析法,故障树分析法.doc
  12. 智慧医疗分支医院时钟系统(子母钟系统)
  13. 交换机和路由器有什么区别
  14. 使用UltraISO制作光盘镜像
  15. 办公一般用什么邮箱?办公邮箱价格哪个好?办公邮箱怎么登陆?
  16. 就业喜报|最高薪资15K,平均7216元,这个双十一不做“吃圭人”!
  17. 如何在字符串中加双引号
  18. Unity集成穿山甲后打包报错android:networkSecurityConfig , Picked up JAVA_TOOL_OPTIONS:-Dfile.encoding=UTF-8
  19. 先导课程 单片机_单片机课程教案-课程教案
  20. 环形光源matlab仿真,一种多角度环形光源的制作方法

热门文章

  1. 获取Url地址中参数的3种方法
  2. Acwing 969. 志愿者招募
  3. WebRTC 服务器搭建篇
  4. SAP 如何在SAP系统中查看股票信息
  5. 构建docker镜像并上传到阿里云仓库
  6. jdk1.7和1.8区别:建议代码实战,加深印象
  7. 编程初学推荐学什么语言?如何自学?
  8. Android - ImageButton单击切换按钮图片效果的实现
  9. 你负责看比赛,其他的放着我来 | 苏宁体育赛事直播频道化运营关键技术
  10. oracle中查找指定字符串位置