一、确定小程序是开发企业内部应用,还是开发第三方应用。

如果是开发企业内部应用,也就是应用自建的可以使用  wx.qy.getMobile 这个api 去获取手机号wx.qy.getMobile 调用前提:
1、必须先调用过wx.qy.login,且session_key未过期,开发者可调用checkSession 检查当前登录态(需要先调wx.qy.login获取seesion_key)
2、要求用户在应用可见范围内,且每次调用都需要用户同意确认(会弹出授权弹窗)
3、获取的是当前企业成员在企业通讯录中的手机号
4、仅自建应用可调用,代开发应用需要管理员勾选授权了手机号,第三方应用不可调用

企业微信接口地址wx.qy.getMobile - 文档 - 企业微信开发者中心 (qq.com)

通过wx.qy.getMobile拿到的数据会是会加密的样子,如下:

说下我了解的解密方法(微信小程序和企业微信小程序解密都一样可用):

1.下载cryptojs解密文件 === 下载地址:https://github.com/gwjjeff/cryptojs/archive/master.zip

我这边是下载放在根目录utils下

2.在utils文件夹下命名RdWXBizDataCrypt.js文件,并写入下面的内容

RdWXBizDataCrypt.js文件内容(可直接复制):

var Crypto = require('./cryptojs/cryptojs.js').Crypto;
var app = getApp();
function RdWXBizDataCrypt(appId, sessionKey) {this.appId = appIdthis.sessionKey = sessionKey
}
RdWXBizDataCrypt.prototype.decryptData = function(encryptedData, iv) {// base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码var encryptedData = Crypto.util.base64ToBytes(encryptedData)// console.log(sessionKey)var key = Crypto.util.base64ToBytes(this.sessionKey);var iv = Crypto.util.base64ToBytes(iv);// console.log(encryptedData,key,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)}if (decryptResult.watermark.appid !== this.appId) {console.log(err)}return decryptResult
}
module.exports = RdWXBizDataCrypt

在需要解密的地方引用文件

(注意路径)   const RdWXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js');

3.解码文件使用:

    //解密获取手机号getphonenumber(e,seesion_key) {;let phone = e.encryptedData;let iv = e.iv;const RdWXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js');var appId = '';//当前小程序appIdlet key = seesion_key;const pc = new RdWXBizDataCrypt(appId, key);const data = pc.decryptData(phone, iv);console.log('解密后的data',data)},

其中e是wx.qy.getMobile获取的加密内容

session_key则是后端接口返回的session_key,调用wx.qy.login时后端会拿到

总结整体流程:

1.先使用wx.qy.login登录接口,再拿到后端给的session_key

2.调wx.qy.getMobile拿到加密数据

3.下载cryptojs解密文件,创建RdWXBizDataCrypt.js文件,去解密

我自己实际项目使用完整代码:

login(){const _this = thisreturn Dialog.confirm({title: '授权',message: '我们需要您授权手机号来确定您用户的身份',beforeClose: (action) => new Promise((resolve) => {if (action === 'confirm') {wx.qy.login({success: function (res) {console.log(res)resolve(true);login({  //后端接口code: res.code}).then(res => {if (res.code == 0) {let session_key=res.data.sessionKeywx.qy.getMobile({success: function (res) {let phone = res.encryptedData;let iv =res.iv;const RdWXBizDataCrypt =require('../../utils/RdWXBizDataCrypt.js');var appId = '';//当前小程序appIdlet key = session_key;const pc = new RdWXBizDataCrypt(appId, key);const data = pc.decryptData(phone, iv);console.log(data); //解码后内容}})}})},})} else {// 拦截取消操作resolve(true);}})})},

二、如果是开发第三方应用则需要构造网页授权链接

构造第三方应用oauth2链接构造网页授权链接 - 文档 - 企业微信开发者中心 (qq.com)

说下怎么配置这链接:

appid是企业的CorpID   企业id  具体如下:

其中redirect_uri在

agentid:

官方示例==>https://open.weixin.qq.com/connect/oauth2/authorize?
appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE&agentid=AGENTID#wechat_redirect

注意,大写的单词为你要替换的地方

  • CORPID:企业的CorpID,在管理后台顶部导航选择我的的企业,然后就能找到企业ID

  • redirect_uri:授权重定向的回调链接地址,要使用urlencode对链接进行处理    如:https://py.work/workbar, urlencode处理后就是 http%3A%2F%2Fpy.work%2Fworkbar

  • 在线编码地址urlencode

  • scope:应用授权作用域。snsapi_base:静默授权,可获取成员的基础信息(UserId与DeviceId);snsapi_privateinfo:手动授权,可获取成员的详细信息,包含头像、二维码等敏感信息。

  • AGENTID:应用agentid,应用管理页点开创建的应用就能看到,snsapi_privateinfo时必填。

  • STATE:重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值,长度不可超过128个字节
    6

完整链接示例(地址随便写的):

https://open.weixin.qq.com/connect/oauth2/authorize?
appid=wwa66633643532&redirect_uri=http%3A%2F%2Fpy.work%2Fworkbarresponse_type=code
&scope=snsapi_privateinfo&state=123456&agentid=100222222#wechat_redirect

配置完成后,去页面请求服务器后,直接跳转到此授权链接 ,这个请求中会带有一个用于身份认证的code,拿到code去请求 httphttps://qyapi.weixin.qq.com/cgi-bin/service/auth/getuserinfo3rd?

具体:获取访问用户身份 - 文档 - 企业微信开发者中心 (qq.com)

企业微信小程序获取手机号?相关推荐

  1. uni-app微信小程序获取手机号;微信小程序获取手机号,获取到后需要进行解密;微信小程序获取手机号失败 Error:该appId没有权限

    方法1.uni-app登录加获取手机号解密-直接看此篇即可解决 微信小程序获取手机号注意点: 1.需要先登录,微信小程序登录看这篇 2.手机号获取到时加密的,需要后端解密或者前端自己解密(解密时候就会 ...

  2. 微信授权绑定手机号 java_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPhoneNumber这个组件通过button来实现(别的标签无 ...

  3. 微信小程序获取手机号登录流程

    微信小程序获取手机号登录流程 首先前端使用wx.login 获取code wx.login({success(res) {if (res.code) {that.setData({code: res. ...

  4. 微信小程序获取手机号并解密详解

    微信小程序获取手机号并解密 1 获取手机号 2 解密 2.1 获取所需数据 2.2 解密返回数据 1 获取手机号 获取手机号的过程官方文档有详细的介绍.参考官方链接 要注意的是,此功能只对非个人且完成 ...

  5. 微信小程序---- 获取手机号(微信最新更新)

    微信小程序---- 获取手机号(微信最新更新) 前言:需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphone ...

  6. php 微信小程序获取手机号_实例讲解微信小程序获取手机号授权用户登录功能...

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写.本文主要给大家分享微信小程序获取手机号授权用户登录功能,需要的朋友参考下吧, ...

  7. 微信小程序获取手机号登录流程(个人开发者账号不支持)

    微信小程序获取手机号登录流程 所需条件 1. 非个人开发者账号 2. AppID+AppSecret 流程思路 **注意:** 代码实现 常见问题 所需条件 1. 非个人开发者账号 获取手机号文档 这 ...

  8. java实现微信、手机号登陆_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPaDirIrkFhoneNumber这个组件通过button来 ...

  9. 微信小程序获取手机号组件或即将迎来升级及收费

    据知情人士透漏,继企业微信加好友数量需要收费后,小程序获取手机号组件""即将迎来升级并开启"收费"模式,具体上线时间以"官方公告"为准 以下 ...

最新文章

  1. 微信小程序多项选择器_微信小程序三级联动之多列选择器
  2. WebKit 框架解析
  3. C++ 播放音频流(PCM裸流)
  4. HDU 3001 Travelling
  5. Ribbon-2通过代码自定义配置ribbon
  6. 使用存储过程(22)
  7. 利用python爬虫(part6)--用Xpath匹配带来的数据合并问题
  8. 原生js绑定click为什么点一次执行两次_前端小知识10点(2020.10.8)
  9. tcp 测试软件,ztcp
  10. 机房收费系统重构版:照葫芦画瓢
  11. 深度学习2.0-15.随机梯度下降之梯度下降简介
  12. python 设计模式 原型模式_【设计模式】——原型模式VS模板方法模式
  13. python writelines_详解详解Python中writelines()方法的使用
  14. 如何快速取消大量的合并单元格并向下填充数据
  15. nvidia jetson xavier打开风扇,并设置开机启动
  16. [转载]大数据入门 - 董飞
  17. 【维修】【硬件】【苹果】wifi芯片被加密
  18. LeCo-221. 最大正方形
  19. jdbc写入数据库乱码问题
  20. Ansible#Typora-Ansible笔记

热门文章

  1. ZSG-AP5甲烷传感器校验仪
  2. ubuntu20.04 noetic 安装 Astra Pro 驱动
  3. python报考软考哪个比较好_软考中级哪个好考
  4. 小程序input自动聚焦拉起键盘
  5. Redis的使用【Redis】
  6. java 约分_约分的方法
  7. 尚硅谷的Netty介绍(一)
  8. 计算机实训安全教育,暑期实践 | 计算机学院举行暑期社会实践动员暨安全教育大会...
  9. 哈工大2019年春算法设计与分析期末复习
  10. AutoLISP将图形中文字写入外部文件