uni-app 打包一直出现手机号验证问题 个人中心已经通过验证 打包账号和项目都是同一个

发布于 1周前 作者 itying888 来自 Uni-App

uni-app 打包一直出现手机号验证问题 个人中心已经通过验证 打包账号和项目都是同一个

操作步骤

打包

预期结果

应该要能打包

实际结果

没有打包

bug描述

无法云打包,一直报需要完成社区身份验证 账号和项目都是同一个的

img

开发环境信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 10
HBuilderX类型 正式
HBuilderX版本号 3.7.6
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 mate50
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

2 回复

您好,我现在也遇到了这个问题,请问怎么解决的


针对你提到的uni-app打包过程中一直出现手机号验证的问题,尽管个人中心已经通过验证,且打包账号和项目都是同一个,这通常可能是由于配置或代码中的某些逻辑导致的。以下是一些可能的解决方案,包括一些代码示例,你可以根据实际情况进行排查和调整。

1. 检查manifest.json配置

首先,确保manifest.json中的mp-weixin(或其他小程序平台)配置正确,特别是关于手机号登录和验证的部分。

{
  "mp-weixin": {
    "appid": "your-app-id",
    "setting": {
      "urlCheck": false,
      "requestDomain": ["your-request-domain.com"],
      "wsRequestDomain": ["your-ws-request-domain.com"],
      "uploadDomain": ["your-upload-domain.com"],
      "downloadDomain": ["your-download-domain.com"],
      "debug": false,
      "condition": {}
    },
    "permission": {
      "scope.userInfo": {
        "desc": "你的用户信息将用于小程序手机号验证"
      },
      "scope.phoneNumber": {
        "desc": "你的手机号将用于小程序手机号验证登录"
      }
    }
  }
}

2. 验证手机号获取逻辑

在你的代码中,检查手机号获取的逻辑是否正确。以下是一个获取手机号的基本示例:

uni.getPhoneNumber({
  success: function (res) {
    console.log(res.encryptedData);
    console.log(res.iv);
    // 这里需要将encryptedData和iv发送到你的服务器进行解密
    uni.request({
      url: 'https://your-server.com/decryptPhoneNumber',
      method: 'POST',
      data: {
        encryptedData: res.encryptedData,
        iv: res.iv
      },
      success: function (response) {
        console.log('解密后的手机号:', response.data.phoneNumber);
      }
    });
  },
  fail: function (err) {
    console.error('获取手机号失败:', err);
  }
});

3. 服务器端解密逻辑

确保你的服务器端能够正确解密获取到的手机号。这通常需要使用微信提供的解密接口。以下是一个Node.js的解密示例:

const crypto = require('crypto');
const sessionKey = 'your-session-key'; // 从登录时获取
const encryptedData = 'encrypted-data-from-client';
const iv = 'iv-from-client';

// 解密逻辑(省略具体实现,需参考微信官方文档)
function decryptPhoneNumber(sessionKey, encrypted,Data iv) {
  // ... 解密过程
  return``` decrypted
PhoneNumber
;###
 总结}



确保你的const decryptedPhoneNumber = decryptPhoneNumber(sessionKey, encryptedData, iv);
console.log('解密后的手机号:', decryptedPhoneNumber);
`manifest.json`配置正确,前端获取手机号逻辑无误,且服务器端能够正确解密。如果问题依旧存在,建议检查是否有其他配置或代码影响了手机号验证流程。
回到顶部