1. Determinar si el Mini Programa es para desarrollar aplicaciones empresariales internas o aplicaciones de terceros.
Si está desarrollando aplicaciones empresariales internas, es decir, aplicaciones autoconstruidas, puede usar la API wx.qy.getMobile para obtener el número de teléfono móvil.Requisitos previos para llamar a wx.qy.getMobile : 1. Debe llamar a wx.qy .login primero, y session_key no ha caducado, el desarrollador puede llamar a checkSession para verificar el estado de inicio de sesión actual ( wx.qy.login debe llamarse primero para obtener seesion_key ) 2. El usuario debe estar dentro del rango visible de la aplicación, y cada llamada requiere que el usuario acepte confirmar ( aparecerá la ventana emergente de autorización ) 3. Lo que se obtiene es el número de teléfono móvil de la empresa miembro actual en la libreta de direcciones corporativa 4. Solo yo Se pueden llamar las aplicaciones creadas , y las aplicaciones desarrolladas en nombre del administrador deben verificar y autorizar el número de teléfono móvil, y no se pueden llamar las aplicaciones de terceros
Dirección de interfaz de Enterprise WeChat : wx.qy.getMobile - Documentación - Centro de desarrolladores de Enterprise WeChat (qq.com)
Los datos obtenidos a través de wx.qy.getMobile serán encriptados, de la siguiente manera:
Permítanme hablar sobre los métodos de descifrado que conozco (el descifrado de los applets de WeChat y los applets de WeChat corporativos está igualmente disponible):
1. Descargue el archivo de descifrado de cryptojs === Dirección de descarga: https://github.com/gwjjeff/cryptojs/archive/master.zip
Estoy aquí para descargarlo y ponerlo en el directorio raíz utils
2. Nombre el archivo RdWXBizDataCrypt.js en la carpeta utils y escriba el siguiente contenido
Contenido del archivo RdWXBizDataCrypt.js (se puede copiar directamente):
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
Haga referencia al archivo donde necesita ser descifrado
(tenga en cuenta la ruta) const RdWXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js');
3. Para decodificar el uso del archivo:
//解密获取手机号
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)
},
Donde e es el contenido encriptado obtenido por wx.qy.getMobile
session_key es la session_key devuelta por la interfaz de backend, y el backend la obtendrá cuando llame a wx.qy.login
Para resumir el proceso general:
1. Use wx.qy.login para iniciar sesión en la interfaz primero y luego obtenga la clave de sesión proporcionada por el backend
2. Llame a wx.qy.getMobile para obtener datos encriptados
3. Descargue el archivo de descifrado cryptojs, cree el archivo RdWXBizDataCrypt.js y descifralo
Mi propio proyecto real usa el código completo:
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);
}
})
})
},
2. Si está desarrollando una aplicación de terceros , debe crear un enlace de autorización de página web
Construir un vínculo oauth2 de aplicación de terceros Construir un vínculo de autorización de página web - Documentación - Centro de desarrolladores de Enterprise WeChat (qq.com)
Dime cómo configurar este enlace:
appid es el ID de empresa de CorpID de la empresa de la siguiente manera:
donde está redirect_uri
agentes:
官方示例==>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
Tenga en cuenta que las palabras en mayúsculas son los lugares que desea reemplazar
-
CORPID: el CorpID de la empresa, seleccione Mi empresa en la navegación superior del fondo de administración y luego puede encontrar el ID de la empresa
-
redirect_uri: la URL del enlace de devolución de llamada para la redirección autorizada. Use urlencode para procesar el enlace. Por ejemplo: https://py.work/workbar, después del procesamiento de urlencode, será http%3A%2F%2Fpy.work%2Fworkbar
-
dirección de codificación en línea urlencode
-
ámbito: ámbito de autorización de la aplicación. snsapi_base: autorización silenciosa, que puede obtener la información básica de los miembros (UserId y DeviceId); snsapi_privateinfo: autorización manual, que puede obtener información detallada de los miembros, incluida información sensible como avatares y códigos QR.
-
AGENTID: ID de agente de la aplicación, puede verlo haciendo clic en la aplicación creada en la página de administración de la aplicación, y es necesario para snsapi_privateinfo.
-
ESTADO: el parámetro de estado se incluirá después de la redirección, y la empresa puede completar el valor del parámetro de a-zA-Z0-9, y la longitud no puede exceder los 128
bytes6
Ejemplo de enlace completo (escriba la dirección casualmente):
https://open.weixin.qq.com/connect/oauth2/authorize?
appid=wwa66633643532&redirect_uri=http%3A%2F%2Fpy.work%2Fworkbarresponse_type=código
&scope=snsapi_privateinfo&state=123456&agentid=100222222#wechat_redirect
Una vez completada la configuración, vaya a la página para solicitar el servidor y salte directamente a este enlace de autorización. Esta solicitud contendrá un código para la autenticación de identidad. Obtenga el código para solicitar http://qyapi.weixin.qq.com/ cgi -bin/servicio/auth/getuserinfo3rd?
Específico: Obtener identidad de usuario de acceso- Documentación- Enterprise WeChat Developer Center (qq.com)