微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)

这篇具有很好参考价值的文章主要介绍了微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新版本2.21.2以后获取微信小程序手机号

首先你要确保自己的基础库版本是2.21.2,我选择的是当前最新的

微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)

在button的文档描述

微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)
在代码开始前给大家讲讲注意事项(不需要直接往下看)
微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)
然后接下来是项目代码
WXML

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>

微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)
样式的话自己按需要设置

微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)
通过微信小程序官方api获得回调内容
微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)
已经会出现这个页面了
注意如果是个人小程序是不会出现回调的,但是依旧会弹出这个允许拒绝页面下面是回调内容
长这个样子
微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)
JS

  //点击获取手机号码按钮
  getPhoneNumber(e) {
    wx.request({
      url: 'url',
      data:{
        code:e.detail.code,
      },
      success: (res)=>{
        this.setData({
          mobilePhone: res.data.purePhoneNumber,
        })
      }
    })
  },

不需要做wx.login的处理,只需要将code传给后端即可

老版本兼容获取手机号

WXML

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>

首先我们需要调用wx.login获取到code码
用于调用后端接口获取session_key
JS

//获取js_code
wx.login({
  success (res) {
    console.log(res.code);
  }
})

wx.login一般用于onshow或者onload的生命周期里面,因为如果放在调用函数里面,获取手机号的过程会有稍稍顿挫的缓慢感,所以需要提前调用wx.login,你也可以放在app.js里面的onlanuch

sessionkey的有效期是三天,我们需要后端接口去获取,提交code给后端,返回sessionkey

  onLoad(options) {
    wx.login({
      success: (res) => {
        wx.request({
          url: '后端提供api url',
          data: { code: res.code },
          success: function (res) {
            console.log(res)
            that.setData({
              sessionkey: res.data.session_key,
              openid: res.data.openid
            })
          }
        })
      }
    })
  },

然后通过button回调获取encryptedData ,iv

非完整代码

  getPhoneNumber(e) {
	let appId = 开发者appid
	let sessionKey = 获取的sessionkey
	let encryptedData = encryptedData
	let iv = iv
  },

有了以上信息我们就可以解密了,如果后端做一个接口,我们在下方调用传递接口数据即可

  getPhoneNumber(e) {
	let appId = 开发者appid
	let sessionKey = 获取的sessionkey
	let encryptedData = e.detail.encryptedData
	let iv = e.detail.iv
        wx.request({
          url: 'url',
          data: { 
          appId : 'appid',
		sessionKey,
		encryptedData,
		iv,
 },
          success: function (res) {
			    console.log(res)
          }
        })
  },

如果后端没有写接口,我们也可以解密,不涉及到安全问题,因为你获取的操作都是在用户端实现的
手机号码解密使用的是 CryptoJS 包,点击下载CryptoJS 包
WXBizDataCrypt.js文件

/**
 * Created by rd on 2017/5/4.
 */
// 引入CryptoJS  路径依个人导入情况变动
var Crypto = require('./cryptojs-master/cryptojs.js').Crypto;
var app = getApp();
function RdWXBizDataCrypt(appId, sessionKey) {
  this.appId = appId
  this.sessionKey = sessionKey
}
RdWXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
  // base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码
  var encryptedData = Crypto.util.base64ToBytes(encryptedData)
  var key = Crypto.util.base64ToBytes(this.sessionKey);
  var iv = Crypto.util.base64ToBytes(iv);
  // 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充
  var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);
  try {
    // 解密
    var bytes = Crypto.AES.decrypt(encryptedData, key, {
        asBpytes:true,
        iv: iv,
        mode: mode
    }); 
    var decryptResult = JSON.parse(bytes);
  } catch (err) {
    console.log(err)
  }
  return decryptResult
}

module.exports = RdWXBizDataCrypt

将文件规范放在utils里面
然后需要使用的页面就

let WXBizDataCrypt = require('路径自己改/utils/WXBizDataCrypt')

完整使用代码文章来源地址https://www.toymoban.com/news/detail-431766.html

let WXBizDataCrypt = require('路径自己改/utils/WXBizDataCrypt')
Page({
  onLoad(options) {
    wx.login({
      success: (res) => {
        wx.request({
          url: 'url',
          data: { code: res.code },
          method: 'POST',
          header: {
            'content-type': 'application/json'
          },
          success: function (res) {
            console.log(res)
            that.setData({
              sessionkey: res.data.session_key,
              openid: res.data.openid
            })
          }
        })
      }
    })
  },
  getPhoneNumber(e) {
    let appId = 开发者appid
    let sessionKey = 获取的sessionkey
    let encryptedData = e.detail.encryptedData
    let iv = e.detail.iv
    let pc = new WXBizDataCrypt(appId,sessionKey)
    let res = pc.decryptData(encryptedData ,iv)
    console.log(res)
    },
})

到了这里,关于微信小程序获取手机号详细过程(新版本2.21.2)(旧版本兼容)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 - 实现手机号登录--授权并获取手机号保存至本地

    微信官方文档 | 获取手机号 这是服务端的  这是我们前端获取手机号需要给接口传递的两个参数    注意: 参数一: 获取access_token需要用到小程序密钥,这个需要从 服务端获取 ,也就是需要请求后端接口获取access_token,千万不要将小程序密钥写在前端代码中, 必须 要从服

    2024年02月03日
    浏览(44)
  • 微信小程序:获取用户手机号(前端)

    获取手机号的开发过程可以分为三部分:微信前端设置,微信js文件编写,服务器端程序开发. 其中微信前端最为简单,在获取手机号的过程中我们必须经过用户授权,在wxml文件中加入如下代码: 然后我们需要编写js文件,当用户允许获取手机号后调用相关逻辑,将手机号加密信息发

    2024年02月06日
    浏览(42)
  • 企业微信小程序获取手机号?

    一、确定小程序是开发企业内部应用,还是开发第三方应用。  如果是开发企业内部应用,也就是应用自建的可以使用   wx.qy.getMobile 这个api 去获取手机号 wx.qy.getMobile 调用前提: 1、必须先调用过wx.qy.login,且session_key未过期,开发者可调用checkSession 检查当前登录态( 需要

    2024年02月07日
    浏览(31)
  • 新版微信小程序获取用户手机号

    小程序手机号验证组件有两种 手机号快速验证组件 手机号实时验证组件

    2024年02月11日
    浏览(37)
  • 微信小程序手机号授权获取收费(手机号快速验证组件)剩余次数查看购买

    登录微信公众平台 ,在管理---》付费管理下查看,已用次数和剩余次数 该能力旨在帮助开发者向用户发起手机号申请,并且 必须经过用户同意后 ,开发者才可获得由平台验证后的手机号,进而为用户提供相应服务。 该能力与手机号实时验证组件的区别为: 手机号快速验证

    2024年02月22日
    浏览(50)
  • 微信小程序获取手机号登录(Java后端)

    1.前端请求getPhoneNumber方法获取code传给后端接口; 2.后端接口通过配置的appid、secretKey请求接口https://api.weixin.qq.com/cgi-bin/token获取access_token参数; 3.后端通过参数code和参数access_token,去请求接口https://api.weixin.qq.com/wxa/business/getuserphonenumber来获取手机号。

    2024年02月11日
    浏览(52)
  • 微信小程序——获取用户手机号(Java后台)

    最后有完整代码 1、获取code 2、利用code获取sessionkey 小程序端: Java后台: 获取小程序密钥:微信公众平台-开发管理-开发设置 3、获取iv和encryptedData并解密获取手机号 java后台: 如果报错40029则可能是appid不对 4、完整代码 wxml: wxss: js: Java后台

    2024年02月12日
    浏览(44)
  • 微信小程序: java实现获取手机号方式

    目录 1. 现在比较简单的方式 - 接口名 --- 功能描述 - 调用方式 --- HTTPS 调用 --- 第三方调用 --- 请求参数 --- 返回参数 2. 实现方式 1. 加入fastjson依赖  2. http请求类 3. Json串工具类 4.接口方法 3.另外介绍一点access_token 微信官方文档介绍:  getPhoneNumber --- 功能描述 该接口需配合手机

    2024年02月16日
    浏览(53)
  • 【微信小程序】如何获取用户手机号授权登录

    目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体),也就是说只针对企业认证小程序开放。若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。 在使用该接口时,用户可使用微信绑定手机号进行授权,也添加

    2024年02月16日
    浏览(53)
  • 微信小程序&会议OA-登录获取手机号流程&登录-小程序&导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

    目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小程序 login.js user.j

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包