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

Flutter多平台桌面端Supabase Auth集成问题求助

关于Flutter桌面应用集成Supabase Auth的问题解答

1. Flutter桌面端关联重定向URL Scheme的配置步骤

分平台操作如下:

  • macOS:
    打开项目下的macos/Runner/Info.plist,添加URL Scheme配置。在文件中插入CFBundleURLTypes数组,指定你的自定义scheme(比如myappauth):

    <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>myappauth</string>
        </array>
      </dict>
    </array>
    

    配置完成后,Flutter端可使用app_links或uni_links包监听URL跳转事件,处理魔术链接的回调逻辑。

  • Windows:
    先通过注册表配置注册URL协议,可创建一个.reg文件:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\myappauth]
    @="URL:MyApp Auth Protocol"
    "URL Protocol"=""
    
    [HKEY_CLASSES_ROOT\myappauth\shell\open\command]
    @="\"C:\\Path\\To\\Your\\App.exe\" \"%1\""
    

    双击执行该文件完成注册表配置。之后在windows/runner/main.cpp的WinMain函数中,检查命令行参数是否包含你的scheme链接,传递给Flutter端处理。Flutter端用链接监听包接收回调。

  • Linux:
    编辑项目下的linux/myapp.desktop(替换为你的应用名称),修改Exec字段支持接收URL参数,并添加MimeType声明:

    [Desktop Entry]
    ...
    Exec=myapp %U
    MimeType=x-scheme-handler/myappauth;
    

    保存后运行update-desktop-database命令更新桌面数据库,使系统识别该URL Scheme。Flutter端通过链接监听包处理跳转事件。

2. Supabase SDK支持邮箱OTP手动输入认证

Supabase Flutter SDK完全支持通过邮箱发送OTP,让用户手动输入验证码创建认证会话。核心是使用signInWithOtp方法发送验证码,再用verifyOTP方法完成验证。

示例代码:

final supabase = Supabase.instance.client;

// 向用户邮箱发送OTP
await supabase.auth.signInWithOtp(
  email: 'user@example.com',
  shouldCreateUser: true, // 若用户不存在则自动创建
);

// 用户输入验证码后,调用验证方法
final authResponse = await supabase.auth.verifyOTP(
  email: 'user@example.com',
  token: '用户输入的6位验证码',
  type: OtpType.email,
);

// 验证成功后,authResponse.session包含有效会话信息

注意需在Supabase项目控制台的Auth设置中,启用Email认证方式,并开启OTP选项(可选择关闭魔术链接强制跳转,或同时允许两种认证方式)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:39:59