我有一个 Supabase Edge Function,可以使用 Admin SDK 创建新用户。本周的某个时候,它停止工作,我会收到以下错误:

电子邮件地址未经授权,无法使用

我没有改变任何东西所以我不确定它现在为什么会坏掉。

代码:

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,
    })
  }
})


最佳答案
1

事实证明,Supabase 平台发生了变化,现在要求您为电子邮件注册设置,即使您已关闭电子邮件确认功能。

为了解决这个问题,我建立了一个免费的重新发送帐户,并在 Supabase 中的项目设置 -> 身份验证 -> SMTP 设置下添加了重新发送凭据。

此博客展示了如何使用 Resend 执行此操作:

Github 讨论:

变更日志更新(2024 年 9 月 18 日):

1

  • 那么,如果我不设置自定义 SMTP,我将继续收到此错误?电子邮件地址无法使用,因为它未经授权


    –