Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如果在按下链接后尝试返回移动应用程序,如何处理电子邮件验证?_Firebase_Flutter_Firebase Authentication_Firebase Dynamic Links - Fatal编程技术网

Firebase 如果在按下链接后尝试返回移动应用程序,如何处理电子邮件验证?

Firebase 如果在按下链接后尝试返回移动应用程序,如何处理电子邮件验证?,firebase,flutter,firebase-authentication,firebase-dynamic-links,Firebase,Flutter,Firebase Authentication,Firebase Dynamic Links,需要的行为:当我按下应用程序中的注册按钮时,它会向指定的电子邮件发送验证链接,并导航到移动应用程序中的验证页面,提醒用户已发送验证电子邮件。然后,用户可以转到自己的电子邮件并单击将验证用户的链接,然后将他们引导回验证页面,在那里它将重新加载用户并将他们发送到主页 问题:我需要做什么来处理这个问题 我做过的事情: 我有一个自定义域,我们称之为customdomain.com。我已经设置了firebase主机 我在firebase控制台中创建了一个名为customdomain.com/verify

需要的行为:当我按下应用程序中的注册按钮时,它会向指定的电子邮件发送验证链接,并导航到移动应用程序中的验证页面,提醒用户已发送验证电子邮件。然后,用户可以转到自己的电子邮件并单击将验证用户的链接,然后将他们引导回验证页面,在那里它将重新加载用户并将他们发送到主页

问题:我需要做什么来处理这个问题

我做过的事情

  • 我有一个自定义域,我们称之为
    customdomain.com
    。我已经设置了firebase主机

  • 我在firebase控制台中创建了一个名为
    customdomain.com/verify

  • 我已创建ActionCodeSettings以传递给sendEmailVerification()函数:

    String url = 'https://customdomain.com/verify/';
    String androidPackage = 'com.example.customdomain';
    String iosPackage = 'com.example.customdomain';
    ActionCodeSettings actionCodeSettings = ActionCodeSettings(url: url, handleCodeInApp: true, android: {"packageName": androidPackage, "installApp": true, "minimumVersion": 21}, iOS: {"bundleId": iosPackage}, dynamicLinkDomain: 'https://customdomain.com/verify');
    Future<void> verifyEmail(ActionCodeSettings actionCodeSettings) async {
        User userRegister = _auth.currentUser;
        if (!userRegister.emailVerified) {
            await userRegister.sendEmailVerification(actionCodeSettings);
        }
     }
    
    String url='1!'https://customdomain.com/verify/';
    字符串androidPackage='com.example.customdomain';
    字符串iosPackage='com.example.customdomain';
    ActionCodeSettings ActionCodeSettings=ActionCodeSettings(url:url,handleCodeInApp:true,android:{“packageName”:androidPackage,“installApp”:true,“minimumVersion”:21},iOS:{“bundleId”:iosPackage},DynamicLink域名:'https://customdomain.com/verify');
    未来验证电子邮件(ActionCodeSettings ActionCodeSettings)异步{
    User userRegister=\u auth.currentUser;
    如果(!userRegister.emailVerified){
    等待userRegister.sendEmailVerification(actionCodeSettings);
    }
    }
    
  • 我已将androidManifest.xml和build.gradle设置为处理动态链接

  • 作出的假设

  • 我可以在验证页面上使用ValueNotifier来监听isEmailVerified中的更改
  • 我需要更改电子邮件模板以创建自定义电子邮件操作处理程序?(?)
  • 我不需要在customdomain.com上创建网页来处理电子邮件验证
  • 我将能够从发送到电子邮件进行验证的url解析操作代码
  • 所以我想问几个问题。我需要有自己的自定义服务器才能处理这样的电子邮件验证吗?这一切都可以通过firebase控制台完成吗?当我发送电子邮件时,是发送动态链接还是电子邮件模板发送控制台中的内容

    我找不到任何人在Flatter中实现这一点的例子,所以如果有人能为我指出正确的方向。我一直在努力思考,为了完成这件事,我需要做些什么。如果您需要更多的信息进行澄清,请务必让我知道

    我是否需要拥有自己的自定义服务器才能处理电子邮件 像这样的验证?这一切都可以通过firebase完成吗 控制台

    Firebase可以在Firebase Auth中处理电子邮件验证的所有过程

    当我发送电子邮件时,我是在发送动态链接还是 电子邮件模板发送控制台中的内容

    从Firebase Auth发送的电子邮件验证使用来自Firebase控制台的

    用于发送电子邮件验证和验证应用程序中链接的flatter代码类似于Android文档中的代码

    FirebaseAuth\u auth=FirebaseAuth.instance;
    var emailAuth=”someemail@domain.com";
    void sendmailverification(){
    var acs=ActionCodeSettings(
    //您要重定向回的URL。此URL的域(www.example.com)
    //URL必须在Firebase控制台中白名单。
    url:“https://www.example.com/finishSignUp?cartId=1234",
    handleCodeInApp:没错,
    iOSBundleId:“com.example.ios”,
    androidPackageName:“com.example.android”,
    仙女座:是的,
    雄激素最低版本:“12”);
    _auth.sendSignInLinkToEmail(
    电子邮件:emailAuth,actionCodeSettings:acs)
    .catchError(
    (onError)=>打印('Error sending email verification$onError'))
    .然后((值){
    打印(“已成功发送电子邮件验证”);
    });
    }
    

    void checkEmailLinkAuth(字符串emailLink)异步{
    如果(_auth.isSignInWithEmailLink(emailLink)){
    等待授权
    .signInWithEmailLink(电子邮件:emailAuth,emailLink:emailLink)
    .catchError(
    (onError)=>print(“使用电子邮件链接$onError登录时出错”)
    .然后((值){
    //您可以通过value.user访问新用户
    //其他用户信息档案*不*可通过以下途径获得:
    //value.additionalUserInfo.profile==null
    //您可以检查用户是新用户还是现有用户:
    //value.additionalUserInfo.isNewUser;
    var userEmail=value.user;
    打印('使用电子邮件链接成功登录!');
    });
    }
    }