getPhoneInMiniapp
微信小程序端手机号授权结果解析适配器,被 showWxPhone 内部调用。
本函数不主动调起授权 UI,而是解析 <button open-type="getPhoneNumber"> 事件中的 detail。
前置依赖
typescript
interface PhoneInMiniappDeps {
error: Console['error']
}| 依赖 | 说明 |
|---|---|
error | 错误日志(当前实现主要用于一致性,校验失败直接 reject) |
getPhoneInMiniapp
函数签名
typescript
function getPhoneInMiniapp(
request?: PhoneRequest,
deps: PhoneInMiniappDeps
): Promise<PhoneResult>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
request.eventDetail | any | 否 | 按钮 getphonenumber 事件的 detail |
request.rawEvent.detail | any | 否 | 完整事件对象的 detail |
request.code | string | 否 | 新版手机号 code(与 encryptedData+iv 二选一) |
request.encryptedData | string | 否 | 加密数据(旧版) |
request.iv | string | 否 | 加密算法初始向量(旧版) |
request.cloudID | string | 否 | 云开发 cloudID |
deps | PhoneInMiniappDeps | 是 | 环境依赖 |
返回值
| 类型 | 说明 |
|---|---|
Promise<PhoneResult> | 含 code 或 encryptedData+iv;用户拒绝或缺参 reject |
工作原理
- 从
eventDetail、rawEvent.detail或顶层字段归一化出detail。 - 若
detail.errMsg存在且不含'ok',视为用户拒绝,reject。 - 必须提供 新版
code或 旧版encryptedData+iv,否则 reject 并提示需在 button 事件中传入 detail。 - 成功 resolve 统一
PhoneResult,由后端解密或换手机号;本层不做解密。