自定义电子邮件验证 - 无法设置 emailVerified

Custom email verification – cannot set emailVerified

我正在尝试为用户注册实施自定义电子邮件验证。默认只发送纯文本消息,但我们要发送 HTML 格式的消息。

目前的做法:

  1. 使用 Cloud Code,函数 Parse.Cloud.beforeSave("Parse.User"… 在用户的“confirmationToken”字段中设置生成的令牌
  2. 相同的函数使用 MailChimpMandrill Cloud Module service to the user, including a confirmation link with the confirmationToken like this http://www.our-website.com/confirm_email.php?confirmationToken=confirmationToken
  3. 发送格式化的电子邮件
  4. 用户点击link,我们网站通过HTTP GET请求获取token
  5. 该网站运行 Parse PHP SDK 并查询用户数据库以获取具有与请求中的令牌匹配的 confirmationToken 字段值的用户
  6. 如果找到用户,我们会尝试将 emailVerified 字段设置为 true

问题来了。 emailVerified 字段似乎受到保护。尝试设置它会给你一个 ParseException 'InvalidKeyName' (105)。现在,我可以使用另一个字段,但问题是我们之前已经设置了默认的 Parse 电子邮件验证,而我们的应用程序正在 emailVerified 中寻找该值。用户已经注册了默认的电子邮件验证,我们不能因为部署了应用程序就更改它。

有什么方法可以设置 emailVerified 字段吗? 任何人都可以想出一种解决方案,该解决方案也适用于已经检查该字段的应用程序,即使将来我们必须设置另一个吗? 如果您禁用电子邮件验证,该字段是否仍然受到保护(现在它仍然启用)?

非常感谢任何帮助。

不幸的是,emailVerified 属性无法设置,即使使用主密钥也是如此。唯一的选择是创建自定义验证属性以配合自定义验证逻辑。

我将采用的方法是:

  1. 使用新字段构建并测试新方案
  2. 运行 使用用户的 emailVerified
  3. 填充新属性的迁移
  4. 对任何 Parse.User
  5. afterSave 中调用相同的逻辑
  6. 修改客户端以检查新属性

我意识到第4步违反了问题的前提,但是您的应用程序必须在客户端可以并且将被修改的前提下设计。如果不是这个问题,那将是另一个问题。运营条件会改变,您的客户也必须改变。

我想补充一点,我们在 60 天前在 Parse 上部署了一个应用程序,平均每周有 2,000 个新用户需要电子邮件验证。我们的用户主要是政府(很多 .gov's)。我们每天花费数小时在 Zendesk 中处理未收到验证的用户的支持票 link。支持让我们崩溃。

我意识到锁定该字段的意图,但如果我收到用户的电子邮件,这对我来说就足够了,它将为我们节省大量时间将 emailVerified 切换为 true。

请重新考虑让开发人员自行做出此决定。