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

Supabase Edge Function创建用户报错:邮箱未授权,无代码变更却失效

解决Supabase Edge Function创建用户时的“Email address cannot be used as it is not authorized”错误

你遇到的这个错误,虽然代码和本地配置未做修改,但大概率是Supabase控制台的Auth配置发生了变化,以下是几个必查的关键点:

  • 检查授权邮箱域名列表
    进入Supabase控制台→Authentication→Settings→Authorized Domains,确认你用来创建用户的邮箱域名(比如gmail.com、自定义企业域名)在列表中。如果域名被误删或未添加,就会触发该错误。

  • 验证Email Provider的域名限制
    前往Authentication→Providers→Email,查看“Allowed email domains”设置。如果这里指定了特定域名,而你使用的邮箱不在范围内,同样会报错。可以添加需要的域名,或者清空该字段允许所有域名。

  • 检查Admin API的强制域名限制开关
    在Authentication→Settings里,找到“Enforce email domain restrictions for admin API”选项。如果这个开关被开启,即使使用Service Role Key调用Admin API创建用户,也会受到域名限制。若无需此限制,直接关闭该开关即可。

  • 确认Service Role Key有效性
    虽然你没修改配置,但可以检查Edge Function的环境变量SUPABASE_SERVICE_ROLE_KEY是否正确,有没有被意外替换(Service Role Key默认不会过期,除非手动重置)。

你的代码本身逻辑正确,以下是格式化后的代码:

import { serve } from "https://deno.land/std@0.168.0/http/server.ts"
import { createClient } from "https://esm.sh/@supabase/supabase-js@2.45.3"

const corsHeaders = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type',
}

serve(async (req) => {
  if (req.method === 'OPTIONS') {
    return new Response('ok', { headers: corsHeaders })
  }

  try {
    const { email, password } = await req.json()

    const supabaseClient = createClient(
      Deno.env.get('SUPABASE_URL') ?? '',
      Deno.env.get('SUPABASE_SERVICE_ROLE_KEY') ?? '',
      { auth: { autoRefreshToken: false, persistSession: false } }
    )

    const { data, error } = await supabaseClient.auth.admin.createUser({
      email,
      password,
      email_confirm: true
    })

    if (error) {
      throw error
    }

    return new Response(JSON.stringify({ user: data.user }), {
      headers: { ...corsHeaders, 'Content-Type': 'application/json' },
      status: 200,
    })
  } catch (error) {
    return new Response(JSON.stringify({ error: error.message }), {
      headers: { ...corsHeaders, 'Content-Type': 'application/json' },
      status: 400,
    })
  }
})

内容的提问来源于stack exchange,提问作者Code on the Rocks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:48:23