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

supabase.auth.signInWithOtp()无法resolve,魔法链接已发送无响应

Supabase signInWithOtp魔法链接发送成功但Promise不resolve问题排查

你遇到的问题是魔法链接能正常发送,但await supabase.auth.signInWithOtp()始终不resolve,导致后续代码无法执行。结合本地开发环境的情况,主要排查以下几个点:

1. 检查Supabase控制台的Auth URL配置

Supabase Auth的流程依赖正确的重定向URL配置,本地开发时必须把你的站点地址添加到允许列表:

  • 登录Supabase Dashboard,进入项目的「Authentication」→「URL Configuration」
  • 确保「Site URL」填写了本地开发地址(比如http://localhost:5173)
  • 在「Additional Redirect URLs」中也添加相同地址,保存更改

2. 调用signInWithOtp时显式指定redirectTo参数

默认情况下SDK会使用控制台配置的Site URL,但显式指定可以避免配置不一致导致的等待逻辑卡住:

const { data, error } = await supabase.auth.signInWithOtp({
  email: email.value,
  options: {
    redirectTo: 'http://localhost:5173', // 替换成你的本地开发地址
    shouldCreateUser: true // 确保新用户可自动注册
  }
});

3. 升级Supabase JS SDK到最新版本

旧版本SDK存在发送OTP后Promise不resolve的bug,直接升级即可解决:

# npm
npm update @supabase/supabase-js

# yarn
yarn upgrade @supabase/supabase-js

# pnpm
pnpm update @supabase/supabase-js

4. 排查浏览器隐私设置

本地开发时,浏览器的隐私拦截(比如阻止第三方cookie、启用严格跟踪保护)可能导致SDK无法完成后续监听逻辑,尝试在无痕模式下测试,或允许当前站点的所有cookie权限。

验证修改

完成上述调整后,再次触发魔法链接发送,应该能立即进入console.log代码块,sent_magic_link.value会被设为true,正常触发「请查收邮件」的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:32:42