uniapp获取微信授权登录(保姆教程)

第一步

下载官方给的解密文件‘mWXBizDataCrypt’

没有文件就复制该文件的代码创建一个

var crypto = require('crypto')function WXBizDataCrypt(appId, sessionKey) {this.appId = appIdthis.sessionKey = sessionKey
}WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {// base64 decodevar sessionKey = new Buffer(this.sessionKey, 'base64')encryptedData = new Buffer(encryptedData, 'base64')iv = new Buffer(iv, 'base64')try {// 解密var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)// 设置自动 padding 为 true,删除填充补位decipher.setAutoPadding(true)var decoded = decipher.update(encryptedData, 'binary', 'utf8')decoded += decipher.final('utf8')decoded = JSON.parse(decoded)} catch (err) {throw new Error('Illegal Buffer')}if (decoded.watermark.appid !== this.appId) {throw new Error('Illegal Buffer')}return decoded
}module.exports = WXBizDataCrypt

第二步

在date里面放入这几个数据待会要用到

sessionKey :'',appID:' 你的appid',secret:'你的secret 在公众平台里获取',openId:'',session_key:'',phoneNumber:''

微信公众平台

登录获取授权信息 可放在mounted里面

uni.getProvider({service: 'oauth',success: function(res) {if (~res.provider.indexOf('weixin')) {uni.login({provider: 'weixin',success: (res2) => {const code = res2.code  uni.getUserInfo({provider: 'weixin',success: (info) => { //这里请求接口console.log('res2');console.log(res2);console.log('info');console.log(info);uni.request({url:'https://api.weixin.qq.com/sns/jscode2session?appid='+that.appID+'&secret='+that.secret+ '&js_code=' + res2.code + '&grant_type=authorization_code',data: {},method: 'GET',success(r) {console.log(r.data)that.openId = r.data.openidthat.session_key = r.data.session_key}})},fail: () => {uni.showToast({title: "微信登录授权失败",icon: "none"});}})},fail: () => {uni.showToast({title: "微信登录授权失败",icon: "none"});}})} else {uni.showToast({title: '请先安装微信或升级版本',icon: "none"});}}});

第三步

使用手机号一键登录

按钮

<u-button type="primary" open-type="getPhoneNumber" @getphonenumber="submitlogin" shape="circle" text="微信授权登录" ></u-button>

方法体:submitlogin

然后解密信息

if(e.detail.errMsg=="getPhoneNumber:ok"){// console.log(e);// console.log(e.detail.errMsg);  // console.log(e.detail.iv);  // console.log(e.detail.encryptedData); // console.log('用户点击了接受');this.showModal = false// this.api.phone({//  session_key:this.sessionKey,//  encryptedData:e.detail.encryptedData,//     iv:e.detail.iv// })let mWXBizDataCrypt = new  WXBizDataCrypt('wxf679991a6d85beb2',that.session_key)let crDate = mWXBizDataCrypt.decryptData(e.detail.encryptedData,e.detail.iv) if(crDate.countryCode != '86'){uni.$u.toast('仅限于中国大陆手机号用户使用')return }that.phoneNumber = crDate.phoneNumberconsole.log()}else{console.log('用户点击了拒绝') ;  }

登录成功!

uniapp获取微信授权登录和手机号一键登录(保姆教程)相关推荐

  1. uniapp获取微信授权

    <button open-type="getUserInfo" @getuserinfo="bindgetuserinfo" class="bt ...

  2. 微信小程序手机号一键登录--获取用户手机号--微信小程序一键登录

    前提:现在微信小程序登录我参考了几个大的公司的登录,基本分下面几种 1.微信用户一键登录,授权用户基本信息,不获取手机号 2.微信手机号一键登录,根据手机号去关联在其他平台数据,用手机号关联.然后再调 ...

  3. flutter在IOS上的登录实现——QQ登录、微信登录、自动识别手机号一键登录、apple登录

    flutter在IOS上的登录实现--QQ登录.微信登录.自动识别手机号一键登录.apple登录 一.QQ登录 使用的第三方库: 具体操作方法: 1.配置 Universal Links 2.QQ互联 ...

  4. uniapp手机号一键登录

    uniapp手机号一键登录 先讲几个坑避免操作完以后会出bug无效喷我 部分机型会因为第一次在手机上编译普通基座无法触发手机号一键登录的弹框,这里当然是重启了,重启可以解决百分之八十的问题!!! 然后 ...

  5. 在uni-app中使用手机号一键登录

    1.首先需要在dcloud开发者控制台开通一键登录 https://dev.dcloud.net.cn/uniLogin 开通一键登录服务, 获取关键最关键的两个参数 ApiKey 和 ApiSecr ...

  6. uni-app手机号一键登录

    提示:手机号一键登录有两种方式. 第一种通过调用自有服务器,然后服务器调用云函数登录. 第二种可以前端直接调用云函数进行登录(暂不介绍). 提示:在我的项目中使用的是自由服务器登录,下面的案例可供参考 ...

  7. unicloud云开发---uniapp云开发(四)---本机手机号一键登录以及第三方登陆

    我们来实现一键登录以及第三方登陆 一键登录手登陆机号使用 我们的视频教程(免费)链接为https://static-b5208986-2c02-437e-9a27-cfeba1779ced.bspap ...

  8. 公众号获取用户手机号_小程序中如何获取微信用户绑定的手机号

    小程序官方文档中介绍: 获取微信用户绑定的手机号,需先调用wx.login接口. 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发. 注 ...

  9. 【愚公系列】2022年09月 微信小程序-微信小程序实现网页一键登录功能

    文章目录 前言 一.微信小程序实现网页一键登录功能 1.旧版登录方法 2.新版登录方法 二.相关第三方包源码 前言 如果微信小程序要获取微信登录的用户信息,需要拿到code去后台换取用户信息,具体步骤 ...

最新文章

  1. [JZOJ4786]小a的强迫症
  2. 迎娶了校花的学霸,竟把日子过成了这个样子!
  3. 世界上最美丽的23个公式
  4. 全国四分之三的光伏电站市场面临较大投资风险
  5. 【数据结构基础笔记】【顺序表】
  6. 动态主机配置协议DHCP
  7. 【渝粤教育】电大中专药剂学基础知识 (2)_1作业 题库
  8. MySQL抽稀_Android GPS定位轨迹抽稀之道格拉斯-普克(Douglas-Peuker)算法详解
  9. adb命令查看手机上的APP包名和启动activity
  10. [Android工具]音乐下载软件,MP3音乐无损音乐下载器
  11. QScrollArea qt滚动区域的简单使用
  12. vue项目如何集成金格WebOffice2015
  13. 【Zynq UltraScale+ MPSoC解密学习1】Zynq UltraScale+的基本介绍
  14. 创造者的品味 转自apple4.us
  15. ABAP-接口-tcode:SPROXY-tcode:SXI_MONITOR
  16. vue在一个方法执行完后执行另一个方法
  17. winxp右键进入dos
  18. Ubuntu下实时查看Nvidia显卡显存占用情况
  19. 数论概论读书笔记 37.无理数与超越数
  20. [py]python之信用卡ATM

热门文章

  1. CMNET和CMWAP区别
  2. 为什么1个字节(Byte)等8位(Bit)?
  3. QT windows dpi变化导致的界面异常处理
  4. OCR识别技术之—移动端证件识别
  5. 新中新二代身份证读卡Syn_ReadBaseMsg方法
  6. 股市java_Java获取股市交易日
  7. PTA 7-9 叶节点求和 (20 分)
  8. 基于 React hooks + Typescript + Cesium 实现地下模式预览
  9. Python基础经典问题-求sin正弦值
  10. PyTorch之分布式操作中的Barrier