Flutter Firebase 电子邮件无密码登录 - 链接给出错误

时间:2021-02-22 09:35:51

标签: firebase flutter dart firebase-authentication

我有一个 flutter 应用程序,我在其中尝试使用 firebase 电子邮件无密码登录。发送部分正在工作,但是当我打开链接时出现错误:

email sign in link canHandleCodeInApp error

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。我只能猜测我的链接在某种程度上不正确,但我不知道我在哪里设置错误。如果有人知道我哪里出错了或者您需要其他信息,请告诉我。

解决方案

  1. 使用 DynamicLinkParameters 生成的 Uri 不起作用。只需使用如下字符串:“https://PROJECT.page.link”。这解决了我遇到的错误。

  2. 来自 FirebaseAuth 的 isSignInWithEmailLink 检查在我使用的 ^0.20.0+1 版本中无法正常工作。参考 https://github.com/FirebaseExtended/flutterfire/issues/4711#issuecomment-762323661 如何解决这个问题。修复此问题后,我现在可以按预期使用无密码登录

1 个答案:

答案 0 :(得分:1)

您应该遵循 FlutterFire 上的 Firebase 电子邮件链接身份验证示例指南

https://firebase.flutter.dev/docs/auth/usage/#email-link-authentication

它就像一个魅力。