You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

求助:Supabase未发送注册魔术链接,反而持续发送OTP

问题:Supabase 发送OTP验证码而非注册魔术链接

我希望向用户发送魔术链接,使其完成注册并获取项目的完整访问权限,但调用Supabase的signInWithOtp接口后,用户收到的始终是OTP验证码,而非直接的魔术链接。

实现代码

const { error } = await supabase.auth.signInWithOtp({
  email: email,
  options: {
    shouldCreateUser: true,
    emailRedirectTo: `${window.location.origin}/auth/callback`,
  },
});

相关配置截图

Supabase Auth配置截图


解决方法

  1. 修正代码,指定魔术链接类型
    signInWithOtp默认发送OTP验证码,需显式添加type: 'magiclink'参数来触发魔术链接发送:

    const { error } = await supabase.auth.signInWithOtp({
      email: email,
      type: 'magiclink', // 关键:指定发送魔术链接
      options: {
        shouldCreateUser: true,
        emailRedirectTo: `${window.location.origin}/auth/callback`,
      },
    });
    
  2. 验证Supabase控制台配置

    • 进入项目控制台,打开Authentication -> Settings,确认emailRedirectTo对应的域名已添加到Redirect URLs允许列表
    • 切换到Email Templates,检查Magic Link模板是否启用,且模板内容包含{{ .ConfirmationURL }}变量(魔术链接的占位符)

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

火山引擎 最新活动