ios - 如何重新发送电子邮件验证 parse.com

标签 ios swift parse-platform

我正在尝试触发重新发送用户验证电子邮件。我读了一些帖子,建议将电子邮件地址设置为相同的值并保存用户对象 - 所以我这样尝试:

PFUser.currentUser().email = String(PFUser.currentUser().email)
PFUser.currentUser().saveInBackgroundWithBlock {}

这是行不通的。它永远不会触发验证电子邮件。有没有更好的办法?可能发生了什么。我可以在保存 block 中确认非零用户和成功。

最佳答案

您发现了 Parse 方便的电子邮件验证行为中最粗糙的边缘之一:-) 重新发送电子邮件验证用于通过将电子邮件重置为用户当前地址、保存和验证来工作被发送。目前,此行为不起作用。

只有在服务器上的电子邮件地址发生变化时才会发送验证电子邮件,这是很糟糕的行为。这意味着您需要将电子邮件地址设置为其他地址,保存,成功后将其更改回用户原始电子邮件,然后再次保存。诀窍是第一次更改并保存时,会发送一封验证邮件。

我所做的很糟糕,但这是我发现的唯一不会向临时/无效地址发送随机验证电子邮件的方法,就是清空用户电子邮件,保存,设置它再次,并保存。这会导致中间状态,如果正确地址的设置/保存失败,您就会被搞砸,但这是我找到的唯一解决方法。代码如下。

let user = PFUser.currentUser()
let email = user.email
user.email = ""
user.saveInBackgroundWithBlock { result, error in
  if let e = error {
    // Handle the error
    return
  }
  user.email = email
  user.saveInBackgroundWithBlock {result, error in
    if let e = error {
      // If you have an error here you're screwed, as your user now has a blank email address
      return
    }
  }
}

让用户拥有无法恢复的损坏电子邮件地址的一种方法是在用户对象上有一个“oldEmail”地址字段,然后将其设置为他们的电子邮件,然后将他们的电子邮件设置为“”,然后保存,因此,如果第一次保存成功而第二次保存失败,您可以尝试通过设置 email = oldEmail 来恢复。

关于ios - 如何重新发送电子邮件验证 parse.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201673/

相关文章:

ios - 解析指针值返回 nil 的查询

java - Parse 中的 objectId 始终为 NULL

ios - CollectionView中的程序化搜索栏实现问题

ios - 如何将一个SCNNode指向另一个SCNNode?

ios - swift : Making a get request to Get source code

ios - 带按钮的自定义 MKAnnotation 标注气泡

xcode - Facebook 登录问题 -canOpenURL : failed for URL: "fbauth2:///" - error: "(null)"

快速声明并且数组包含字典

ios - 如何在不更改 UI 的情况下添加 NavigationLink?

javascript - 如何使用 Swift 加载 javascript 后获取页面的 HTML 源代码