ios - 在 iOS/Node 应用程序中使用 google/twitter/linkedIn 身份验证

标签 ios node.js authentication oauth openid

我正在尝试为我正在开发的几个应用程序找出最佳架构。

在这两个应用程序中,我想利用 google/twitter/LinkedIn/etc 来提供用户身份验证。该应用程序由一个 iOS 应用程序组成,该应用程序可以选择将数据发送到我在 node.js 中编写的服务器。

我想利用 OAuth 或 OpenId 来根据上述服务器识别用户,这样我就不必放入自己的身份验证系统。换句话说,允许用户在选择上传数据时重复使用他们的 ID。

我还应该注意,除了识别用户、获取姓名和电子邮件地址之外,我目前无意使用他们的任何 API。

我想我有两个选择:

  1. 将授权代码放入 iOS 客户端,并将某种 key 连同数据一起传输到服务器,然后服务器可以验证这些数据。

  2. 让 iOS 客户端保持相当简单,并处理来自 Node 服务器的授权。

我可能更喜欢第二个选项,因为这意味着我可以集中身份验证并且也能够支持网站。这是我目前的理论。

任何做过类似事情的人都可以给我一些关于 OAuth 或 OpenId 的优缺点的建议,或者一些示例的链接吗?

最佳答案

在我们之前的应用程序中,我们选择了两种方法的组合。我们希望将用户数据集中在我们的服务器上,以便将来需要对这些服务进行 API 调用。我们还希望客户端用户能够获得 native oAuth 体验。即:在 Android 和 iOS 上,开发人员可以通过 native Facebook 应用程序(如果可用)运行单点登录/授权,而不是弹出一个提供“批准”对话框的 Web View 。我认为这是更好的用户体验。同样对于 Twitter,oAuth 过程可能需要在回调中输入 PIN 码,这可能应该在客户端处理。

如果您打算对这些服务进行其他 API 调用,则可以将客户端检索到的访问 token 传递到服务器进行存储并供以后使用,前提是您希望该 token 具有长期生命周期(即:离线访问权限)在 FB 上)。

无论如何,这主要是用户体验决定。

关于ios - 在 iOS/Node 应用程序中使用 google/twitter/linkedIn 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10908102/

相关文章:

objective-c - UIKeyboard-关闭大写锁定键

javascript - Firebase 未定义

c - C 中的登录模拟器,取消引用不完整类型错误

php - 在 php.ini 文件中保存 MySQL 用户名/密码安全吗?

ios - UILabel 和 UIProgressView 直到我的通信类完成才更新

ios - 在iOS 7中更改UISearchBar UISegmentedControl的字体大小和字体样式

ios - FaSTLane - 覆盖输出名称

node.js - Express 和 nginx net::ERR_CONTENT_LENGTH_MISMATCH

ruby - 使用 child_process.exec 从 NodeJS 调用 Ruby 时如何设置 Ruby 版本

使用 Dtrace 进行 Node.js 分析时不显示函数名称