2

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

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

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

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

我想我有两个选择:

  1. 将授权代码放置在 iOS 客户端中,然后将某种密钥与可以验证的数据一起传输到服务器。

  2. 保持 iOS 客户端相当笨拙,并处理来自节点服务器的授权。

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

做过这样的事情的任何人都可以给我一些关于优缺点、OAuth 或 OpenId 的指示,或指向一些示例的链接吗?

4

1 回答 1

2

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

如果您打算对这些服务进行额外的 API 调用,您可以将客户端检索到的访问令牌传递给服务器以供存储和以后使用,前提是您希望令牌是长期存在的(即:FB 上的离线访问权限) .

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

于 2012-06-06T16:21:17.907 回答