我正在使用Firebase为我的Flutter应用程序(Android,但最终将在iOS上实现)实现电子邮件链接登录。
我最终成功地向用户发送了一封电子邮件,其中包含一个动态链接,当你点击它时,它会打开应用程序,但是,应用程序内永远不会收到这个动态链接(.getInitialLink()总是null)
我的main()
函数如下所示:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
debugPrint('A ${initialLink?.link}');
if (initialLink != null) {
final Uri deepLink = initialLink.link;
if (FirebaseAuth.instance.isSignInWithEmailLink(deepLink.path)) {
debugPrint('A signed in with email link');
}
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
debugPrint('B ${pendingDynamicLinkData.link}');
final Uri deepLink = pendingDynamicLinkData.link;
if (FirebaseAuth.instance.isSignInWithEmailLink(deepLink.path)) {
debugPrint('B signed in with email link');
}
},
).onError((error) {
debugPrint('ERROR: $error');
});
runApp(const App());
}
.getInitialLink()
始终为空,并且.onLink
从不发出任何类型的数据。
依赖关系:
...
- firebase_auth 4.2.10 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
- firebase_core 2.7.1 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_dynamic_links 5.0.16 [firebase_core firebase_core_platform_interface firebase_dynamic_links_platform_interface flutter meta plugin_platform_interface]
...
flutter doctor
:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.6, on Manjaro Linux 6.1.12-1-MANJARO, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2022.1)
[✓] Connected device (3 available)
[✓] HTTP Host Availability
• No issues found!
我已经在Flutter的专用Discord服务器上请求帮助,但是由于该服务器的性质,所有你的问题都被淹没了,没有人得到回答。
当我试图在谷歌上搜索这个问题的答案时,我发现了几个关于这个主题的GitHub问题,但都是关于iOS的,没有一个得到了明确的答案(由于不活动,它们都被自动关闭了)。
我对调试这些SDK有点厌倦了,这对我的工作效率是一个真实的的杀手
如果有人能提供哪怕是最微小的建议,我将不胜感激
1条答案
按热度按时间wkyowqbh1#
过了很久才解决
由于某种原因,
firebase_dynamic_links
又开始工作了,但仍然没有通过核对
原来
deepLink.path
不包括oobCode
这样的路径参数(非常感谢VSCode调试工具帮助我找到这个参数)我把它改成了一个简单的
deepLink.toString()
,现在它可以工作了。呼