当前位置: 首页 > 知识库问答 >
问题:

flutter+firebase无密码电子邮件登录-动态链接数据返回null

华炜
2023-03-14

我正试图在我的应用程序上实现无密码电子邮件登录。点击链接后,应用程序从后台返回,但动态链接为空。

这就是我发送邮件的方式(当然是用我的应用程序的正确值):

user.sendSignInWithEmailLink(
      email: _email,
      androidInstallIfNotAvailable: true,
      iOSBundleID: "com.company.appname",
      androidMinimumVersion: "16",
      androidPackageName: "com.company.appname",
      url: "https://appname.page.link/email",
      handleCodeInApp: true);

我还补充了以下意图:

<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="appname.page.link" android:scheme="http"/>
           <data android:host="appname.page.link" android:scheme="https"/>
        </intent-filter>

尝试了不同的变体,但没有帮助,包括将firebase项目url作为主机编写,如:project-name.firebaseapp.com

数据仍然是空的。

有什么想法吗?我是不是漏掉了什么?

共有1个答案

萧业
2023-03-14

我已经将Firebase_Dynamic_Links包更新到最新版本(0.5.0+9),同时使用下面的配置,它开始工作。

发送登录链接配置:

firebaseAuth.sendSignInWithEmailLink(
        email: email,
        url: "https://mydemoapp.page.link/email",
        androidInstallIfNotAvailable: true,
        androidMinimumVersion: '21',
        androidPackageName: 'com.example.mydemoapp'
        handleCodeInApp: true,
        iOSBundleID: 'com.example.mydemoapp');
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    <intent-filter>
        <data android:host="mydemoapp.page.link" android:scheme="https"/>
        <data android:host="mydemoapp.page.link" android:scheme="http"/>
    </intent-filter>

在颤振中获得动态链接。

该示例来自https://pub.dev/packages/firebase_dynamic_links

如果应用程序没有从动态链接打开,getInitialLink()将返回null。这就是为什么您必须Firebasedynamiclinks.instance.onlink实现的原因,以防应用程序已经打开。

void main() {
  runApp(MaterialApp(
    title: 'Dynamic Links Example',
    routes: <String, WidgetBuilder>{
      '/': (BuildContext context) => MyHomeWidget(), // Default home route
      '/helloworld': (BuildContext context) => MyHelloWorldWidget(),
    },
  ));
}

class MyHomeWidgetState extends State<MyHomeWidget> {
  .
  .
  .
  @override
  void initState() {
    super.initState();
    this.initDynamicLinks();
  }

  void initDynamicLinks() async {
    final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
    final Uri deepLink = data?.link;

    if (deepLink != null) {
      Navigator.pushNamed(context, deepLink.path);
    }

    FirebaseDynamicLinks.instance.onLink(
      onSuccess: (PendingDynamicLinkData dynamicLink) async {
        final Uri deepLink = dynamicLink?.link;

        if (deepLink != null) {
          Navigator.pushNamed(context, deepLink.path);
        }
      },
      onError: (OnLinkErrorException e) async {
        print('onLinkError');
        print(e.message);
      }
    );
  }
  .
  .
  .
}

必须将mydemoapp.page.link添加到Firebase控制台中的授权域

 类似资料:
  • 我有一个flutter应用程序,我试图使用firebase电子邮件无密码登录。发送部分正在工作,但当我打开链接时,我得到一个错误: 但是,actioncode设置中的handleCodeInApp参数为true。 Uri在这里创建: FirebaseAuth中的isSignInWithEmailLink检查在我使用的^0.20.0+1版本中不能正常工作。有关如何修复此问题,请参考https://g

  • 我正在使用Firebase以及作为Firebase动态链接的一部分生成的url。 > firebase动态url如下所示:例如:https://myapp.page.link/h1c4 用户收到电子邮件并点击验证链接。 在重定向结束时,我可以看到url包含如下所示的oobCode: https://myapp.page.link/h1c4?apikey=&oobcode=yg2n2elu4qgbs

  • 当使用signInWithEmailAndPassword()API在firebase中进行身份验证时,我无法获得有效的“当前”用户。 我使用用户名和密码登录应用程序 我一旦登录,用户就会被带到主页 我试图获取用户的UID,但是没有返回有效的用户。调用发生在异步函数中,如下所示: 当前用户为空。 知道是什么引起的吗?

  • 我正在使用RNfirebase与我的react-native应用程序。我可以得到电子邮件验证链接来打开我的应用程序,但仅此而已。我知道我需要访问链接并解析它以获得oobCode并将其应用于用户。但是,当我使用该链接打开应用程序时,我从'react-native'中使用{Linking}触发的监听器似乎没有检测到该URL。我想将他们重定向到“感谢您验证您的电子邮件”页面,以及使用由Firebase生

  • null 我需要重新验证用户,最好的方法是什么?在用户登录后,如何切换的状态? 谢谢

  • 我正在使用Apple sign in将用户登录到我的应用程序,然后在Firebase上进行身份验证。现在,有时用户不分享他们的电子邮件,在这种情况下,苹果提供了一个虚构的电子邮件。登录后,am通过先用Firebase验证,将电子邮件存储在数据库中。我更新虚构的电子邮件与一个真实的首先在firebase,然后发送验证电子邮件。在firebase上更新主电子邮件后,用户是否可以再次登录苹果,因为苹果仍