【发布时间】:2020-09-10 05:23:01
【问题描述】:
所以我想让新用户在决定实际登录之前可以在我的应用中看到一些内容。
我需要在新用户登录之前为他们实现sign in anonymously,因为在我的firebase安全规则中,有一个规则状态,用户必须像这样登录
function isSignedIn() {
return request.auth != null;
}
1) 首先,安装应用程序后,一个新用户来了,然后使用下面的代码匿名登录,假设这个匿名用户的用户 ID 是 A1a2A3a4A5a6A7
Auth.auth().signInAnonymously() { (authResult, error) in
// create anonymous user wih uid == A1a2A3a4A5a6A7
}
2) 然后这个用户决定使用真实的电子邮件登录,不再是匿名的,使用谷歌帐户,然后我使用下面的代码链接它。现在用户 A1a2A3a4A5a6A7 登录提供者已成为谷歌帐户
let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken, accessToken: authentication.accessToken)
Auth.auth().signIn(with: credential) { (user, error) in
// A1a2A3a4A5a6A7 is now using google account as the provider
}
3) 然后该用户使用以下代码执行注销:
GIDSignIn.sharedInstance().signOut()
这就是问题.....
为了让这个用户仍然可以看到我的应用程序中的一些内容,我必须让这个用户重新登录,对吗?
那么我应该为这个已注销的注册用户做什么?
我必须再次执行 signAnonymously 吗?但这会创建一个新的不同用户 ID 对吗?我担心如果创建了新的用户 ID,它会造成双重帐户。
或者我可以将注册用户身份验证提供商从使用谷歌帐户登录更改为匿名。为了保持用户ID相同。
不知道有没有更好的办法,怎么办?
【问题讨论】:
标签: ios swift firebase firebase-authentication firebase-security