You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twilio+Supabase+Flutter发送OTP时出现SmsStatus.status反序列化错误

问题原因

这个报错是Supabase客户端SDK与服务端实例版本不兼容导致的序列化异常:服务端返回的短信状态字段status为数字类型,但你当前使用的SDK版本内置的结构体定义该字段为字符串类型,JSON反序列化时类型不匹配触发报错。另外你使用的signIn接口在新版Supabase SDK中已被废弃,接口参数结构变动也会触发该异常。

解决方案
  • 第一步:升级Supabase Flutter SDK到最新稳定版
    修改pubspec.yaml中的依赖声明为最新版本,示例如下:
    dependencies:
      supabase_flutter: ^2.3.4
    
    执行命令更新依赖:
    flutter pub upgrade supabase_flutter
    
  • 第二步:替换已废弃的发送OTP接口
    新版SDK使用signInWithOtp方法发送手机号验证码,正确代码示例如下:
    Future<void> signInUser(String phonenum) async {
        final response = await supabaseClient.auth.signInWithOtp(
            phone: phonenum,
            options: AuthOptions(redirectTo: 'https://vmlkpbfoohvcmnzgkkpr.supabase.co'),
        );
        if (response.error != null) {
          // 错误处理
          print('Error: ${response.error?.message}');
        } else {
          // OTP发送成功,等待用户输入验证码后校验
          print('OTP 发送成功');
        } 
    }
    
  • 第三步:校验手机号格式
    传入的手机号必须符合E.164标准,需要携带国家码前缀,比如中国手机号格式为+8613xxxxxxxxx,格式错误也会触发底层序列化异常。
  • 降级备选方案
    如果升级后仍然存在兼容问题,可将SDK降级到1.x稳定版,示例版本声明:
    supabase_flutter: ^1.10.24
    

内容的提问来源于stack exchange,提问作者Usama Yousaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:45:02