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

如何在Windows和MacOS上通过Flutter实现Supabase OAuth应用重定向

在Windows和macOS中实现Supabase OAuth登录重定向

对于Supabase Flutter的OAuth登录,在Windows和macOS平台实现重定向的核心是配置对应平台的URL Scheme,并确保Supabase控制台已添加回调地址,以下是分平台的具体实现步骤:

macOS平台

1. 配置URL Scheme

打开macOS项目的Info.plist文件(可通过Xcode或直接编辑文件),添加URL类型配置:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>com.mianala.playlist</string> <!-- 和Android保持一致的Scheme -->
    </array>
  </dict>
</array>

如果用Xcode操作:选中项目target → 切换到Info标签 → 找到URL Types → 点击+按钮,在URL Schemes输入框填入com.mianala.playlist即可。

2. 设置重定向地址

代码中保持和Android一致的redirectTo参数即可:

final String redirectTo = 'com.mianala.playlist://login-callback/';
bool result = await supabase.auth.signInWithOAuth(Provider.google, redirectTo: redirectTo);

Windows平台

1. 配置URL Scheme

Windows需要两步配置:

  • 修改项目manifest:打开windows/runner/Runner.exe.manifest,添加协议扩展配置:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <!-- 原有内容保留 -->
  <extensions>
    <uap:Extension Category="windows.protocol">
      <uap:Protocol Name="com.mianala.playlist">
        <uap:DisplayName>你的应用名称</uap:DisplayName>
      </uap:Protocol>
    </uap:Extension>
  </extensions>
</application>
  • 处理启动参数:Windows应用会将重定向URL作为命令行参数传递,需要在windows/runner/main.cpp中获取并传递给Flutter引擎,确保Supabase能接收回调。修改wWinMain函数:
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
                      _In_ wchar_t *command_line, _In_ int show_command) {
  // 原有代码...

  // 获取命令行中的重定向URL
  std::wstring cmd_args = command_line;
  if (!cmd_args.empty()) {
    // 将URL传递给Dart侧,可通过MethodChannel实现,确保Supabase Auth能处理
    // 或者直接让Flutter引擎处理,Supabase_flutter会自动解析会话信息
  }

  // 原有代码...
}

2. 设置重定向地址

同样使用和Android、macOS一致的redirectTo参数:

final String redirectTo = 'com.mianala.playlist://login-callback/';
bool result = await supabase.auth.signInWithOAuth(Provider.google, redirectTo: redirectTo);

通用注意事项

  • 必须在Supabase控制台的Authentication → URL Configuration中,添加com.mianala.playlist://login-callback/这个重定向地址,否则Supabase会拒绝回调请求。
  • 跨平台可以通过Platform类统一处理redirectTo参数:
import 'dart:io';

final String redirectTo = Platform.isAndroid || Platform.isMacOS || Platform.isWindows
    ? 'com.mianala.playlist://login-callback/'
    : ''; // iOS等其他平台可单独配置对应Scheme

内容的提问来源于stack exchange,提问作者Mia loha.dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:35:21