【发布时间】:2015-10-27 03:13:14
【问题描述】:
背景
我打算在我的应用程序中实现密码重置功能。经过一些研究,我评估了这种方法以满足我的需求:
- 用户进入“重置密码”活动,在该活动中他输入预先注册的电子邮件以发送重置链接。
- 系统有一个表
password_change_requests,其中包含ID、Time和UserID列。当用户按下“发送”按钮重置密码时,会在表中创建一条记录。Time列包含用户按下“忘记密码”按钮的时间。ID是一个字符串。创建一个长随机字符串,然后像密码一样散列。然后将此哈希用作表中的“ID”。 - 系统向用户发送一封电子邮件,其中包含一个链接。该链接还包含原始 ID 字符串(在散列之前)。
- 当用户单击电子邮件中的链接时,他将被移至相关应用程序。应用程序从 URL 中检索 ID,再次对其进行哈希处理,然后对照表进行检查。如果存在这样的记录并且不超过 24 小时,则会提示用户输入新密码。
- 用户输入新密码,点击确定。
这种方法的灵感来自 Vilx- 对this question 的回答。
困难
乍一看,上面介绍的方法似乎很容易实现。但是我遇到了一些头痛。步骤(1)和(2)很容易实现。当我仔细查看步骤 (3) 和 (4) 时,我最初的想法是在电子邮件中发送某种 Intent,因为这是启动应用程序的常用方式。但由于意图的“来源”充其量是 HTML 代码,我不太确定这是否可行。
问题
- 如何从用户收件箱中的电子邮件(比如 HTML 锚标记)启动我的特定 Android 应用程序?
- 如何通过电子邮件将数据(ID 字符串)传递给我的应用程序?
如果这不可能,是否有替代方法来解决上述方法?
【问题讨论】: