uni-app中使用uni-id-co下的sendSmsCode接口无法正确获取短信

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

uni-app中使用uni-id-co下的sendSmsCode接口无法正确获取短信
一个简单的页面。包括手机号输入框,图形验证码组件,页面中引入uni-id-co,希望使用sendSmsCode接口获取验证短信。目前短信相关服务已经开通,账户有充值。但是在页面调用sendSmsCode接口一直报错,使用“bind-mobile-by-sms”的scene参数报错“验证码错误”,使用“send-sms-code”的scene参数时报错“参数错误”,代码如下:

async sendSms() {
    let params= {
        mobile: this.formData.mobile,
        captcha: this.formData.captcha,
        scene: "send-sms-code"
    }
    console.log("params:", params);
    let res= await uniIdCo.sendSmsCode(params);
    console.log("res:", res);
}

另外,config.json中关于sms的参数配置如下:

"sms": {
    "name": "手**证",
    "codeExpiresIn": 600,
    "scene": {
        "bind-mobile-by-sms": {
            "templateId": "3**6",
            "codeExpiresIn": 240
        }
    }
},

不知道错误在哪里,有没有见过这种情况的大神,帮助解决一下,谢谢。


2 回复

发送短信验证码,需要先输入图形验证码,这个有输入吗?


在uni-app中使用uni-id-co模块下的sendSmsCode接口时,如果无法正确获取短信验证码,可能是由于多种原因导致的,包括但不限于参数配置错误、服务器端问题、网络请求失败等。以下是一个基本的代码示例,以及一些常见的排查步骤和可能的解决方案。

示例代码

首先,确保你已经正确安装了uni-id-co模块,并在页面中引入了它。

// 引入uni-id-co模块
import uniId from '@dcloudio/uni-id-co';

// 发送短信验证码的函数
export function sendSmsCode(phoneNumber) {
  uniId.sendSmsCode({
    phoneNumber: phoneNumber, // 替换为实际的手机号
    templateId: 'your-template-id', // 替换为你在uniCloud控制台设置的短信模板ID
    scene: 'login', // 场景,如login、register等
    success: (res) => {
      console.log('短信发送成功', res);
      // 这里可以处理短信发送成功后的逻辑,比如显示倒计时按钮等
    },
    fail: (err) => {
      console.error('短信发送失败', err);
      // 处理发送失败的逻辑,比如提示用户检查手机号是否正确等
    }
  });
}

// 调用发送短信验证码的函数
sendSmsCode('12345678901'); // 请替换为实际的手机号

排查步骤

  1. 检查手机号格式:确保传入的手机号格式正确,没有多余的空格或字符。

  2. 检查模板ID:确认templateId是否正确,且已经在uniCloud控制台配置了相应的短信模板。

  3. 检查网络请求:使用开发者工具的网络请求面板,查看sendSmsCode接口的网络请求是否成功,返回了什么错误信息。

  4. 检查服务器端日志:如果你有权限访问服务器,查看服务器端的日志,可能会有更详细的错误信息。

  5. 检查uniCloud配置:确保你的uniCloud项目已经正确配置,包括短信服务的接入信息。

  6. 测试不同的手机号:尝试使用不同的手机号进行测试,排除手机号被运营商限制或黑名单的情况。

通过上述步骤,你应该能够定位到无法获取短信验证码的具体原因,并采取相应的解决措施。如果问题依然存在,建议联系uni-app或uniCloud的官方支持获取更专业的帮助。

回到顶部