前言:微信敏感数据需要加解密


  • 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  • 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key。

  • 获取code->获取session_key

调用wx.login(),获取code,通过自建服务器,向微信服务器请求获取session_key,例:

https://api.weixin.qq.com/sns/jscode2session?appid=固定的appid&secret=固定的secret&js_code=每次小程序传参&grant_type=authorization_code  

返回

{"session_key":"xxxxxxxxxxxxxx==","expires_in":7200,"openid":"xxxxxxxxxxxx"}
  • 利用session_key和encryptedData、iv解密手机号,encryptedData、iv通过小程序点击获取登录用户手机授权取得,例:
<button class='loginBtn' open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">登录/注册</button>
(注:open-type 必须是 "getPhoneNumber",否则无效 )

返回

{errMsg: "getPhoneNumber:ok", encryptedData: "zCxufhXc6MsvM5EPgFTUmPWcLRQZJEf+/YQQJPpxo8+GwJSX0Z…PNKqtXRiPSkBTtZWpc1ViCySaWrhlRMwjT0KARIPm7hh/dg==", iv: "xyR8amjJ6RKC8pjRFFv9HA=="}

自建服务器解密代码:

import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.spec.AlgorithmParameterSpec;  /** * 小程序AES解密 */
public class AESDecodeUtils {  public static void main(String[] args) throws Exception {  byte[] encryptedData = Base64.decodeBase64("通过小程序授权获取到的encryptedData");  byte[] ivData = Base64.decodeBase64("通过小程序授权获取到的iv");  byte[] session_key = Base64.decodeBase64("通过自建服务器请求微信后台获取到的session_key");  System.out.println(decrypt(session_key,ivData,encryptedData));  }  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");  }
}  

解密后,得到的数据:

{"phoneNumber": "13812341234",  //号码是假的(国外手机号会有区号)"purePhoneNumber": "13812341234", "countryCode": "86","watermark":{"appid":"APPID","timestamp":TIMESTAMP}
}

加密数据解密算法
微信对于权限管理和安全性做得还是挺到位的

小程序登录状态/手机号码获取相关推荐

  1. Java实现微信小程序登录注册:获取OpenId和手机号

    登录流程时序: 说明 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器. 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID . 用户在微信 ...

  2. 微信小程序登录状态维护-java后台

    先上一张小程序官方的登录时序图(https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html) ...

  3. 全栈项目|小书架|微信小程序-登录回调及获取点赞列表功能

    效果图 这一节介绍,登录回调 以及 喜欢列表 的实现. 登录回调:这里是指在获取登录完成之后,再进行下一步的操作. 比如效果图中我的页面,默认是未登录状态,积分和喜欢列表的数量都没有获取到. 而登录成 ...

  4. (JAVA)支付宝小程序登录相关(authToken获取用户唯一userId、encryptedData解密手机号)

    前言: 最近公司做一个支付宝小程序项目,用支付宝userId做唯一用户id,后台encryptedData解密出用户支付宝绑定的手机号信息,其中 参数:authToken和encryptedData均 ...

  5. 微信小程序登录,后端获取信息的问题

    1,后端和前端要有一致的appid和appsecret 2,小程序必须要绑定微信开放平台 3,小程序进行企业认证且是服务号

  6. 获取微信小程序登录code和获取手机号code

    // index.ts // 获取应用实例 const app = getApp<IAppOption>()Page({data: {motto: 'Hello World',userIn ...

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

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

  8. 微信小程序登录-手机号授权并获取手机号

    做微信小程序时,记录实现微信小程序登录 这里已经获取用户openId和sessionKey 1.通过按钮触发手机号授权 必须要通过按钮触发授权,open-type='getPhoneNumber'不能 ...

  9. 小程序登录授权code

    小程序登录授权code 小程序登录授权code获取教程.小程序code获取 前言 有时候需要爬取某些小程序的数据,但是有需要授权才能登陆,这时候小程序code的作用就体现出来了.如何获取小程序code ...

最新文章

  1. 思科交换机配置试题_(思科配置试题可以略过)
  2. 【原创】CSSOO的思想及CSS框架的应用(未整理完)
  3. 【hdu4281状态压缩+01背包+多旅行商问题】
  4. Apache 重写规则的常见应用 (rewrite)
  5. H - Square Card HDU - 7063
  6. 屏幕的宽度_交互规范:响应式让屏幕利用更高,用户体验更佳
  7. android个推快速集成,个推用户画像产品(个像)Android集成实践
  8. 如何保护 IT 基础设施的安全?谷歌给出了500页的答案
  9. dbeaver驱动问题解决方案
  10. 【转】ubuntu 12.04 /sbin/ldconfig.real: /usr/local/lib/*.so.8 不是符号连接 解决办法
  11. Python标准库学习笔记7:数据持久存储与交换
  12. bash shell for循环1到100
  13. 记录隐藏ubuntu桌面图标
  14. 系统篇-在linux上用deb包安装steam。
  15. HRBUST 1212 乘积最大
  16. 爱站网关键词挖掘查询工具-批量网站关键词挖掘导出软件免费下载
  17. siri 语义识别_如何查看使用Siri识别的歌曲列表
  18. python中字符串输出乱码怎么解决_python字符乱码的解决小结
  19. 人工智能AI 01人工智能入门指南
  20. 单片机开发和嵌入式开发流程图

热门文章

  1. Tensorflow-FeutureColumns
  2. 方案报价页面前台页面根据情况自动创建li标签————记录备份
  3. matlab mnist 代码,MNIST手写字 Matlab程序,包含BP和CNN程序
  4. Qt 多线程显示gif动态图
  5. 宝鲲财经:六点简单让你做单盈利
  6. hdfs hive sparkSQL 结合处理离线日志统计任务
  7. 联邦学习在腾讯微视广告投放中的实践
  8. 【原创】医鹿APP九价HPV数据抓包分析
  9. 关于百度蜘蛛IP详解
  10. hdu 逆袭指数