我有一个 flutter 应用程序,我在其中尝试使用 firebase 电子邮件无密码登录。发送部分正在工作,但是当我打开链接时出现错误:
actioncode 设置中的 handleCodeInApp 参数为 true。
_firebaseAuth.sendSignInLinkToEmail(
email: email.value,
actionCodeSettings: firebase_auth.ActionCodeSettings(
url: uri.toString(),
iOSBundleId: "myPackageName",
androidPackageName: "myPackageName",
androidMinimumVersion: '0',
androidInstallApp: false,
handleCodeInApp: true,
dynamicLinkDomain: "myPackageName",
),
);
Uri 在此处创建:
DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://myRegisteredDomain',
link: Uri.parse('https://myRegisteredDomain'),
androidParameters: AndroidParameters(
packageName: 'myPackageName',
minimumVersion: 0,
),
iosParameters: IosParameters(
bundleId: 'myPackageName',
minimumVersion: '0',
),
);
return await parameters.buildUrl();
意图过滤器设置如下:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="myRegisteredDomain" android:scheme="https"/>
<data android:host="myRegisteredDomain" android:scheme="http"/>
</intent-filter>
在 firebase 中,我已根据需要设置了域,并且已将其列入白名单。在这一点上,我不知道为什么我什至收到此错误,因为 handleCodeInApp 设置为 true。我只能猜测我的链接在某种程度上不正确,但我不知道我在哪里设置错误。如果有人知道我哪里出错了或者您需要其他信息,请告诉我。
解决方案
使用 DynamicLinkParameters 生成的 Uri 不起作用。只需使用如下字符串:“https://PROJECT.page.link”。这解决了我遇到的错误。
来自 FirebaseAuth 的 isSignInWithEmailLink 检查在我使用的 ^0.20.0+1 版本中无法正常工作。参考 https://github.com/FirebaseExtended/flutterfire/issues/4711#issuecomment-762323661 如何解决这个问题。修复此问题后,我现在可以按预期使用无密码登录
答案 0 :(得分:1)
您应该遵循 FlutterFire 上的 Firebase 电子邮件链接身份验证示例指南
https://firebase.flutter.dev/docs/auth/usage/#email-link-authentication
它就像一个魅力。