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主机
customdomain.com/verify
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);
}
}
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;
打印('使用电子邮件链接成功登录!');
});
}
}