uni-app uniID.loginBySms一直提示短信验证码错误或已失效

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

uni-app uniID.loginBySms一直提示短信验证码错误或已失效

操作步骤:

const params = {  
    mobile,  
    templateId,  
    type:'login',  
    code  
}  
const res = await uniID.sendSmsCode(params)  
const res = await uniID.verifyCode(params)  
console.log(res);  
const res1 = await uniID.loginBySms(params)  
console.log(res1);  
return res1

预期结果:

uniID.loginBySms正常返回

实际结果:

uniID.loginBySms返回
```plaintext
```json
{
    "code": 50202,
    "errCode": "uni-id-invalid-verify-code",
    "errMsg": "短信验证码错误或已失效",
    "msg": "短信验证码错误或已失效",
    "message": "短信验证码错误或已失效"
}

bug描述:

需求是使用短信验证码登录,用云函数uniID的方式(非uni-id-co,因为用这个很不爽),使用uniID.sendSmsCode发送验证码,但是uniID.verifyCode可以验证通过,uniID.loginBySms却提示“短信验证码错误或已失效”,opendb-verify-codes表也生成记录了,时间也是正确的


6 回复

注意验证码只能使用一次,你这段你代码里面verifyCode和loginSms都会校验验证码,导致后校验的不通过。如果你是想排查仅调用loginBySms也不通过的问题,建议看下验证码的使用场景传的对不对


我也明白验证一次就会失效。就是因为一直失败,才有了verifyCode这段代码,想知道验证的时候是否正常

回复 4***@qq.com: “建议看下验证码的使用场景传的对不对”

https://uniapp.dcloud.net.cn/uniCloud/uni-id/old.html#sendsmscode 你用的是uni-id公共模块,看看你发短信的时候传的type对不对

回复 4***@qq.com: 请问解决了吗;跟你一样

在使用 uni-appuniID.loginBySms 方法时,如果一直提示“短信验证码错误或已失效”,可能是以下几个原因导致的。你可以根据这些原因逐一排查问题:

1. 验证码未正确发送或接收

  • 问题:用户可能没有正确接收到短信验证码,或者输入的验证码与服务器发送的不一致。
  • 解决方案
    • 确保用户输入的验证码与接收到的验证码一致。
    • 检查短信发送服务是否正常工作,确保验证码能够成功发送到用户手机。

2. 验证码过期

  • 问题:短信验证码通常有一个有效期(如5分钟),如果用户输入时验证码已经过期,就会提示错误。
  • 解决方案
    • 确保用户在验证码有效期内输入。
    • 如果验证码过期,重新获取新的验证码。

3. 验证码未正确存储或匹配

  • 问题:服务器可能没有正确存储验证码,或者在验证时没有正确匹配。
  • 解决方案
    • 检查服务器端验证码的存储逻辑,确保验证码在发送后被正确存储。
    • 确保在验证时,服务器能够正确匹配用户输入的验证码。

4. 请求参数错误

  • 问题:在调用 uniID.loginBySms 时,可能传递的参数不正确,如手机号、验证码等。
  • 解决方案
    • 检查调用 uniID.loginBySms 时传递的参数是否正确,特别是 mobilecode 参数。
    • 确保手机号和验证码的格式正确。

5. 服务器端配置问题

  • 问题:服务器端的短信验证码服务可能配置不正确,导致验证码无法正确验证。
  • 解决方案
    • 检查服务器端的短信验证码服务配置,确保其正常工作。
    • 查看服务器日志,排查是否有错误信息。

6. 网络问题

  • 问题:网络延迟或中断可能导致验证码验证失败。
  • 解决方案
    • 确保网络连接正常,尤其是在验证码验证时。
    • 如果网络不稳定,建议用户重试。

7. 代码逻辑问题

  • 问题:客户端或服务器端的代码逻辑可能存在问题,导致验证码验证失败。
  • 解决方案
    • 检查客户端和服务器端的代码逻辑,确保验证码的发送、存储和验证流程正确。
    • 可以通过调试工具逐步排查问题。

8. uniID 版本问题

  • 问题:使用的 uniID 版本可能存在 bug 或不兼容问题。
  • 解决方案
    • 确保使用的是最新版本的 uniID
    • 查看官方文档或社区,确认是否有已知问题或更新。

9. 短信服务商问题

  • 问题:短信服务商可能存在问题,导致验证码无法正确发送或验证。
  • 解决方案
    • 联系短信服务商,确认服务是否正常。
    • 检查短信服务商的 API 调用是否成功。

10. 用户输入错误

  • 问题:用户可能输入了错误的验证码。
  • 解决方案
    • 提示用户仔细检查输入的验证码,确保无误。
    • 提供重新获取验证码的选项。

示例代码

以下是一个简单的 uniID.loginBySms 调用示例:

uniID.loginBySms({
  mobile: '13800138000', // 用户手机号
  code: '123456' // 用户输入的验证码
}).then(res => {
  console.log('登录成功', res);
}).catch(err => {
  console.error('登录失败', err);
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!