- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
警告:我对一般编码和 xcode 非常陌生
运行 Xcode 8.2
无论如何,我已经保存了我的用户身份验证详细信息、电子邮件密码。我将它们保存在 user/currentUser.UID 下,它提供了用户名和电子邮件。我想检索用户名并将其作为标签文本,但 UID 不同?!
通过数据库抓取用户名,并为用户名设置标签
@IBOutlet weak var welcomeHomeUsername: UILabel!
func welcomeHomeAddUsername() {
guard let uid12 = Auth.auth().currentUser?.uid else {
return
}
print("User ID post guard: \(uid12)")
ref.child("users").child(uid12).child("username").observeSingleEvent(of: .value, with: { snapshotWelcome in
print(snapshotWelcome)
let welcomeHomeUser = snapshotWelcome.value as? String
self.welcomeHomeUsername.text = welcomeHomeUser
})
}
然后这是允许用户使用 firebase auth 进行注册的代码,然后将用户名和电子邮件值保存在/users/(uid)/
@IBAction func signUpButton(_ sender: Any)
{
//Authenticate User//
Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
if user != nil {
print("User Created")
self.performSegue(withIdentifier: "backLogin", sender: self)
}
else {
print("error no seg")
}
}
//Successfully Authenticated User//
guard let uid = Auth.auth().currentUser?.uid else {
return
}
//Add User to Database//
let ref = Database.database().reference(fromURL: "~~~My Database URL~~~")
let usersReference = ref.child("users").child(uid)
let values = ["username": usernameTextField.text, "email": emailTextField.text]
usersReference.updateChildValues(values) { (err, ref) in
if err != nil {
print("error no user created")
}
if (Auth.auth().currentUser != nil){
print("user id: " + (Auth.auth().currentUser?.uid)!);
return
}
print("Saved user succesfully into Firebase DB")
}
}
然后在我的控制台输出中
user id: mrsIBAAl2LVb7FetVxnMwBtMJ562
User ID post guard: 0QkYbdPdH7QdZsdRjck53l4Ekrk2
Snap (message1) Welcome to the Beta!
Snap (username) <null>
我还有一个获取 MOTD 的函数,现在是“欢迎参加测试!”这是我数据库中的一个分支,我在不同的函数中引用它,但我认为这不会产生影响。
最佳答案
Eureka !我发现问题了!
我查看了我的注册流程并测试了它的不同部分,这时我注意到数据库中的 UID 是过去的 UID,即身份验证,因此当创建新的身份验证 UID 时,旧的 UID 就会出现在数据库中。我使用控制台打印查看了流程,发现用户的身份验证和创建是在数据库记录用户之后发生的!因此,为了解决这个问题,我将身份验证放入其自己的函数中,然后在用户通过身份验证后,我调用将用户添加到数据库的函数,这样就可以了!
@IBAction func signUpButton(_ sender: Any)
{
signupTrue = 0
print(signupTrue)
let ref3 = Database.database().reference()
ref3.child("schools").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild(self.schoolNameTextfield.text!){
print("true school exist")
signupTrue = 1
print(signupTrue)
self.authUserFunc()
}
else {
print("false school doesn't exist")
signupTrue = 2
print(signupTrue)
}
})
print("Test ending ref3")
}
func authUserFunc() {
//Authenticate User//
Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
if user != nil {
print("User Created")
self.performSegue(withIdentifier: "backLogin", sender: self)
self.addToDatabase()
}
else {
print("error no seg")
}
}
//Successfully Authenticated User//
}
func addToDatabase() {
print("Starting add to database")
print("starting signup")
//Add User to School Database//
let ref = Database.database().reference(fromURL: "~~~My Database URL~~~")
let userSchoolReference = ref.child("schools").child(schoolNameTextfield.text!).child("users").child("\(Auth.auth().currentUser!.uid)")
let values = ["username": usernameTextField.text!, "email": emailTextField.text!]
userSchoolReference.updateChildValues(values) { (err, ref) in
if err != nil {
print("error no school user created")
}
if (Auth.auth().currentUser != nil){
print("Saved user succesfully into School Firebase DB")
//print("user id: " + (Auth.auth().currentUser?.uid)!);
return
}
}
//add user to users file//
//let userReference = ref.child("users").child("\(Auth.auth().currentUser!.uid)")
let values2 = ["username": usernameTextField.text!, "email": emailTextField.text!, "password": passwordTextField.text!]
Database.database().reference().child("users").child("\(Auth.auth().currentUser!.uid)").updateChildValues(values2) { (err, ref) in
if err != nil{
print("Error no user created")
return
}
}
print("\(Auth.auth().currentUser?.uid)")
//end func addToDatabase
}
感谢您的所有帮助!我想现在我已经度过了这个坎坷,我将能够以更多的知识继续我的编码!
关于swift - 当前用户 UID 与身份验证 UID 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51887703/
如果满足条件,我如何才能只获取特定记录? 我有代码为 "SELECT a.id, a.text, a.uid, a.time FROM story a INNER JOIN friends b
每当我尝试提取用户的 uid 时,它都会给我电子邮件。有谁知道为什么? var user = firebase.auth().currentUser; if (user != null
我正在为自己的业务编写一个简单的客户数据库(新娘礼服),并尝试实现以下目标: 我尝试过滤掉那些没有“ordered = 1”标志的uid。因此,不应显示来自用户的所有条目,其中至少一个条目具有“ord
我有一张表,UID 是主键。在旧系统中,它不是主键。因此,人们可以向该字段插入数据,但我们不想再这样做了。 在这个表中,我在 UID 2000 和 2005 之间有一个差距(2003 被占用)。我如何
我刚开始使用 Firebase(我正在使用react-redux-firebase,但不确定这是否与这个问题相关)。我在使用这些标准身份验证规则时遇到问题: { "rules": {
警告:我对一般编码和 xcode 非常陌生 运行 Xcode 8.2 无论如何,我已经保存了我的用户身份验证详细信息、电子邮件密码。我将它们保存在 user/currentUser.UID 下,它提供
有人知道吗,如果我从我的应用程序启动 android web-view 窗口,它是否与启动它的应用程序具有相同的 UID。我正在使用三星手机,我认为他们使用的是 Web-Kit 浏览器,但我也想知道使
我有一个正在注册用户的注册表单,如果注册完成,应该重定向到index.html(主页)。 问题:按下提交按钮后,页面刷新并且表单获取重置,不会重定向,除非我按 CTRL + SHIFT + R 然后将
这个问题在这里已经有了答案: SecurityException: caller uid XXXX is different than the authenticator's uid (17 个答案
我正在尝试构建一个基于 PHP 的 Web 软件,但我遇到了一个我不知道解决方案语法的问题。 基本上,我有两个表: +-------------+ +---------------+ | Ce
我有一个 Firebase 表,其中包含任务列表。 任务有一个名为 uid 的字段。 我想获取我传入的 uid == uid 的所有任务。 最佳答案 Firebase 允许您对一组数据进行排序和过滤。
这是一个 set-root-uid 程序 $ls -l -rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x* 源代码: int main(void) {
我在 OSX 上使用 emacs 24.5.1 和 mu4e 和 mbsync。我正在与 imac 和笔记本电脑同步,所以可能与前面提到的错误相同 here ,但没有人发布解决方案。 我的具体错误是在
我注意到 access(2) 系统调用使用真实且无效的用户 ID 进行访问控制检查的困难之处。虽然这与 Linux 上的 access(2) 手册页所说的一致,但对我来说仍然没有什么意义......
我需要帮助来了解如何创建数据库系统,以便每个用户都有自己的数据,我想确保当我从我的站点发送数据时,它是用这个顺序保存的(集合名称)/(创建该数据的用户的 uid)/(名称由日期创建的文档#this 我
假设我有一个独特的 VarChar(32) 列。 例如。 13bfa574e23848b68f1b7b5ff6d794e1。 我想在将列转换为 int 时保留它的唯一性。我想我可以将所有字母转换为它们
我想弄清楚如何将我的“数据”数组中的 Firebase UID 字符串与我从 firebase 调用中提取的键相匹配。我需要将“数据”数组中的字符串与“键”相匹配,然后我就可以按我想要的方式操作数据。
如果我使用 imaplib 在收件箱中有此邮件的 UID,如何获取所有 Maill 文件夹中邮件的 UID?如您所知,所有邮件和收件箱中的两个实例中的谷歌商店邮件我想使用 imaplib 将其移动到垃
我正在制作一个控制电话网络状态的应用(在 2G/3G 之间切换)。 出于某种原因,我的应用程序使用 sharedUserId="android.uid.system",但在 Phone 上下文下运行(
我在尝试实现 Sample Sync Adapter 应用程序时收到上述异常。我看过很多与此问题相关的帖子,但没有令人满意的回复。 所以我会记下my solution在这里以防其他人遇到同样的问题。
我是一名优秀的程序员,十分优秀!