每次请求验证短信验证码时都返回603错误,查看LeanCloud后台短信记录,发现实际上已经验证成功了,但是一分钟后会再出现一条603错误(每次都是一分钟整),而我的js sdk每次都只能收到那个一分钟后的错误回调,之前成功的那次验证并没有回调。

下面是我获取和验证短信验证码的代码,js sdk版本号为3.4.2

function requestSmsCode(phone, operation, callback) {
    AV.Cloud.requestSmsCode({
        mobilePhoneNumber: phone,
        name: APP_NAME_ZH,
        op: operation,
        ttl: 10                     // 验证码有效时间为 10 分钟
    }).then(function(){
        //调用成功
        console.log('发往 ' + phone + ' 的验证短信调用成功');
        callback(0);
    }, function(err){
        //调用失败
        callback(1);
        console.error('发往 ' + phone + ' 的验证短信调用失败');
        console.error(err);
        context.logInDashboard(err);
    });
}

function verifySmsCode(phone, code, callback) {
    AV.Cloud.verifySmsCode(code, phone).then(function(){
        //验证成功
        console.log(phone + ' 验证码验证成功');
        callback(0);
    }, function(err){
        //验证失败
        callback(1);
        console.error(phone + ' 验证码验证失败');
        console.error(err);
        context.logInDashboard(err);
    });
}

那你在浏览器控制台的 network 里有看到两条请求还是一条请求?

已解决 sweat_smile我把短信验证封装在云函数里了。浏览器控制台的network只请求了一次云函数,这也是迷惑性最大的地方。实际上是我的云函数里面有bug导致验证完成后数组越界,没有response给客户端,一分钟整后触发server内部机制再次跑一遍这个云函数,而第二遍肯定603,所以就把603回调response给客户端了。