如何使用电子邮件验证创建iOS应用以进行注册?

时间:2017-09-21 18:45:33

标签: ios swift xcode email

你会认为人们会回答这个问题几十次甚至几百次,但令我惊讶的是,人们似乎对iOS开发中的这些问题不感兴趣?

我正在创建一个需要人们登录的应用程序(Xcode,Swift 4)。验证后的凭据将存储在各种类型的数据库中,但在帐户存在之前,用户必须注册。注册过程应包括电子邮件验证和稍后的电话号码验证。

如何使用从应用或应用程序附带的某个服务器发送的确认电子邮件验证某人的电子邮件地址?我特别不想使用Parse等外部库我在网上找到的Firebase。如果Apple Dev API中有一个我缺少的库,我将非常感谢你在正确的方向上轻推。

感谢任何可以帮助我的人。

2 个答案:

答案 0 :(得分:1)

您无法使用用户凭据和目标用户的SMTP服务器选择代表用户以编程方式发送电子邮件。即使你想出了一个技巧,苹果也不会因为用户隐私而在App Store中允许它。安全风险。

您可以尝试将一整堆代码放入您的应用中,以便使用应用中的硬编码凭据与您自己的SMTP服务器进行通信,但安全地执行此操作需要做很多工作,我怀疑它会很多一般的工作。

您最好的选择是让您的应用与您的服务器进行通信(NSURLSession)以发送用户的注册信息,让服务器随时执行所需操作,包括通过电子邮件向用户发送确认电子邮件。

这些教程可以帮助您:

关于如何让服务器发送短信,请参阅this SO answer

答案 1 :(得分:0)

(假设你有某种类型的服务器管理知识) 是的,你不需要FirebaseParse来实现这一目标,但它没有痛苦:(

  

您想要服务器或(Google Cloud Functions或AWS Lambda)吗?

(请注意,您的应用需要通过HTTPHTTPS请求与每个选项进行对话。

(您可以在AWS EC2,Google Cloud VM,Digital Ocean的任何地方获得该VM)

让我们从服务器开始,您需要创建一些REST API并从特定端口80或443(安全端口)运行它。您可以使用Swift(查看有助于创建其余api的Vapor等库,或查看其他库),而不是学习新语言。

**如果你没有使用swift,那么使用javascript(Express等的Node.js库会帮你创建那个api)**

电子邮件或电话验证逻辑(服务器端,您的API具有处理验证的特定路由):

(查找允许在服务器端发送电子邮件的库。)

  • 您在应用中收到的此路线/路径Dictionary包含电子邮件或电话号码
  • 计算一些随机数
  • 此处有两种情况:(电子邮件)向用户的电子邮件发送一封电子邮件,邮件正文中包含该随机代码。 (电话号码)您使用Twillio api通过短信发送代码。
  • 要结束 api路由/路径的响应send this random code to app(将其缓存到UserDefault或您喜欢的任何内容,因为当用户输入收到的代码时,你需要验证它(因为从服务器端生成的代码被缓存,我的意思是现在你得到了要点)

      

    管理该VM:

  • 保持vm端口锁定来自外部防火墙

  • 您需要更新系统
  • 如果您的系统重新启动(您的api会发生什么)
  • 如果你一次收到很多请求怎么办(你应该有负载平衡))

      

    云功能或AWS Lambda(而不是ELB + Api Gateway + Lambda):

  • 无需管理服务器

  • 无法使用swift,您需要了解javascript or python
  • 同样的验证逻辑适用于此
  

要确保从您的应用到您的api之间的连接,请查看 JWT令牌,您需要确保其他人无法访问您的api中的任何路由