企业微信小程序获取手机号?

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

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

 如果是开发企业内部应用,也就是应用自建的可以使用  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 = appId
    this.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 = '';//当前小程序appId
        let 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 = this
    return 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.sessionKey
                  wx.qy.getMobile({
                    success: function (res) {
                      let phone = res.encryptedData;
                      let iv =res.iv;
                      const RdWXBizDataCrypt =require('../../utils/RdWXBizDataCrypt.js');
                      var appId = '';//当前小程序appId
                      let 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)文章来源地址https://www.toymoban.com/news/detail-467710.html

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

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

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

相关文章

  • 微信小程序:获取用户手机号(前端)

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

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

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

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

    微信小程序手机号授权获取收费(手机号快速验证组件)剩余次数查看购买

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

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

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

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

    微信小程序获取手机号登录(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日
    浏览(48)
  • 微信小程序: java实现获取手机号方式

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

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

    【微信小程序】如何获取用户手机号授权登录

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

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

    微信小程序&会议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日
    浏览(13)
  • 微信小程序:授权登录获取手机号及获取基本信息等

    微信小程序:授权登录获取手机号及获取基本信息等

    微信文档 1)需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,通过 getphonenumber 事件获取回调信息; 2)将 getphonenumber 事件回调中的动态令牌code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机

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

    随着微信小程序的普及,许多应用程序需要用户登录才能提供更好的服务。而获取用户手机号码是验证用户身份和确保账户安全的重要步骤之一。因此,在本文中,我们将介绍如何在微信小程序中实现手机号授权登录。 首先,在小程序后台开发设置中勾选“获取手机号”选项

    2024年02月11日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包