2015-12-21 231 views
1

我試圖執行自定義電子郵件驗證用戶註冊。默認的僅發送純文本消息,但我們希望發送HTML格式的消息。自定義電子郵件驗證 - 無法設置電子郵件驗證

目前的方法:

  1. 使用雲代碼,Parse.Cloud.beforeSave("Parse.User"…設置在用戶的「confirmationToken」字段中輸入生成的令牌
  2. 同樣的功能將使用MailChimpMandrill Cloud Module服務格式的電子郵件功能給用戶,包括確認鏈接confirmationToken這樣http://www.our-website.com/confirm_email.php?confirmationToken=confirmationToken
  3. 用戶點擊鏈接,我們的網站得到令牌th粗糙的HTTP GET請求
  4. 網站運行Parse PHP SDK和查詢用戶數據庫,以獲得與confirmationToken字段的值,如果發現用戶從請求
  5. 令牌相匹配的用戶,我們嘗試設置emailVerifiedtrue ...

現在是問題所在。 emailVerified字段似乎受到保護。試圖設置它會給你一個ParseException'InvalidKeyName'()。現在,我可以使用另一個字段,但問題是我們之前已經設置了默認的Parse電子郵件驗證,並且我們的應用正在尋找emailVerified中的該值。用戶已經使用默認的電子郵件驗證進行註冊,並且我們不能僅僅因爲部署了應用程序而改變它。

有沒有什麼辦法可以設置emailVerified字段? 任何人都可以想到一個解決方案,它也適用於已經在檢查這個字段的應用程序,儘管將來我們不得不設置另一個應用程序。 如果您禁用電子郵件驗證(現在仍然啓用),該字段是否仍然受到保護?

任何幫助,非常感謝。

回答

1

不幸的是,即使使用主密鑰,也不能設置emailVerified屬性。唯一的選擇是創建一個自定義驗證屬性以與定製驗證邏輯一起使用。

我會帶會是這樣的方法:

  1. 構建和測試新的方案,使用新的領域
  2. 運行用於填充新屬性的遷移用戶的emailVerified
  3. 調用同樣的邏輯afterSave任何Parse.User
  4. 修改客戶機來檢查新的屬性

我意識到第4步違反了這個問題的前提,但是您的應用程序必須在客戶可以修改的前提下進行設計。如果不是這個問題,那將是另一回事。經營條件將改變,您的客戶也必須改變。

+0

出於好奇:什麼最好的方法來設計一個可以修改的客戶端? 現在我要麼破壞現有用戶註冊的應用程序,要麼我必須爲新用戶發送兩次驗證電子郵件。我想我應該添加一些Parse Class來啓用或禁用與其版本相關的應用中的功能? –

+0

您可以用一個通過新流程註冊的客戶來替換客戶嗎?它是什麼樣的客戶? – danh

+0

這是一個原生的iPhone和Android應用程序,所以我只是想知道如何保持兼容性,當人們不會同時更新應用程序。我甚至無法在舊應用的註冊過程中向我的用戶提供錯誤消息。我只是希望你能給我一些更具體的設計策略,正如你所說的,你的應用程序必須在客戶可以並將被修改的前提下設計。 –

2

我只想補充一點,我們已經在60天前在Parse上部署了一個應用程序,平均每週有2,000位新用戶需要進行電子郵件驗證。我們的用戶主要是政府(很多.gov)。我們每天花費幾個小時在Zendesk處理未收到驗證鏈接的用戶的支持服務。支持正在粉碎我們。

我意識到了鎖定字段的意圖,但是如果我從用戶那裏收到一封電子郵件,那對我來說已經足夠驗證了,這將爲我們節省很多時間來將emailVerified切換爲true。

請重新考慮讓開發人員自行作出此決定。

+0

+1我們的自定義解決方案的工作方式可能與默認的parse.com相同。如果他們有HTML電子郵件,我們甚至不需要這樣做。順便說一句,我認爲你可以在數據庫中手動設置emailVerified字段。 –

+0

@JulianVogels不幸的是你不能。當您嘗試切換'emailVerified'真/假解析引發錯誤:「用戶無法設置emailVerified字段」 –

+0

是的,您是對的,它不會更新。您可以切換它,甚至可以設置值...我一開始沒有注意到底部的警報。 –