1.电子邮件账户密码登录方式:
-
发起登录请求:
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { }];
-
注册:
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { }];
-
退出登录:
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
2.电子邮件链接无密码登录
原理是当用户发起电子邮件无密码登录时,FaseBase向用户邮箱发送一份带有身份认证的动态链接邮件,用户在邮箱中点击邮件中的认证链接后,认证链接会跳转到当前应用,客户端在appledegate方法中拦截到跳转的认证链接,并且拿到这个链接和邮件账户向FireBase发起身份认证,由于在这个认证过程中,不需要用户输入登录密码仅需要用户的电子邮箱,所以称之为电子邮件链接无密码登录
1.代理拦截认证链接
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring> > *_Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:@"NSUserActivityTypeBrowsingWeb"]) {
[self sendEmailToLogin:userActivity.webpageURL.absoluteString];
return YES;
}
return NO;
}
2.发起认证
- (void)sendEmailToLogin:(NSString *)linkString{
FIRUser *userInfo = [FIRAuth auth].currentUser;
if (userInfo) {
NSLog(@"当前用户处于登录状态:%@",userInfo.providerData.firstObject.uid);
}
if ([[FIRAuth auth] isSignInWithEmailLink:linkString]) {
[[FIRAuth auth] signInWithEmail:@"邮箱地址"
link:linkString
completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) {
// ...
[NSUserDefaults.standardUserDefaults setObject:linkString forKey:@"Link"];
}];
}
}
1.要完成上面的账户密码身份认证和电子邮件无密码登录认证,需要对FireBase控制台身份认证(Authentication)功能模块中开启电子邮件账户密码登录功能。
2.对于认证动态链接中包含的域名,需要在身份认证模块(Authentication)下的授权网域中进行授权。
3.在Dynamic Links(动态链接)中配置跳转链接
动态链接配置,首先需要一个网址前缀,格式为: example.page.link, example一般是你的app的项目名称。
然后配置动态的链接(以http://或者https://开头),指定指定跳转到目标页面
指定该链接打开方式是在浏览器中打开还是在app中打开
4.注意,如果链接需要在app中打开,那么必须要进行如下配置,否则不能打开App:
1.在FireBase控制台项目设置中,必须配置:
- 软件包名称(bundle ID)
- 团队ID(team ID)这个需要去苹果开发者后台证书配置的地方去获取
- App Store ID ,主要是针对于未安装App的用户,需要引导用户跳转到App store中去下载app
bundle ID和team ID是认证链接能够跳转打开App必须要配置的参数
2.检查配置是否正确可以通过打开以下网址确认:
https://your_dynamic_links_domain/apple-app-site-association
这里的your_dynamic_links_domain就是之前我们配置动态链接时创建的网址前缀example.page.link
如果返回结果为:
{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
并且details不为空,则说明配置正确。
5.xcode的配置,在xcode中,需要在signing & capabilities功能中新增关联域名模块(Associated Domains)域名格式必须以applinks开头再加上我们配置动态链接时的网址前缀,格式如下:
applinks:example.page.link