Flutter Supabase Android邮箱注册认证重定向地址异常问题
问题排查与解决方案
1. 检查Supabase邮件模板是否硬编码重定向地址
登录Supabase控制台,进入Authentication > Templates查看确认邮件模板:
- 若模板里直接写死了
https://eisgd.com(比如替换了{{ .ConfirmationURL }}变量),则代码传入的redirectTo参数会失效。 - 必须确保模板使用
{{ .ConfirmationURL }}变量,它会自动带上代码中指定的重定向地址。
2. 确认signUp方法是否正确传递redirectTo参数
检查注册逻辑代码,确保调用Supabase的signUp时明确传入redirectTo:
await Supabase.instance.client.auth.signUp( email: userEmail, password: userPassword, options: AuthOptions( redirectTo: _getSignUpRedirect(), // 务必传入方法返回的对应平台地址 ), );
如果遗漏options或redirectTo参数,Supabase会默认使用控制台配置的Site URL(即你设置的Web地址)。
3. 验证平台判断逻辑的准确性
检查_getSignUpRedirect()的实现,确保Android端判断无误:
String _getSignUpRedirect() { if (kIsWeb) { return 'https://eisgd.com'; } else { return 'com.eis.good_day://login-redirect/'; } }
- 需导入
package:flutter/foundation.dart使用kIsWeb(比Platform.isWeb更可靠)。 - 在Android端打印日志,确认方法返回的是
com.eis.good_day://login-redirect/而非Web地址。
4. 核对Supabase控制台的重定向URI配置
确认控制台Authentication > URL Configuration中已添加Android的重定向URI:
- 必须包含
com.eis.good_day://login-redirect/,且格式无多余空格或错误字符。 - 同时保留Web端地址,避免影响Web端功能。
5. 清除缓存后重新测试
- 卸载重装Android端应用,清除旧配置缓存。
- 重新发送确认邮件,检查新邮件中的重定向地址是否正确。
内容的提问来源于stack exchange,提问作者Davout
相关产品推荐
相关产品推荐

