2012-06-06 49 views
2

我正在尝试为我正在开发的几个应用程序制定出最佳体系结构。在iOS/Node应用程序中使用google/twitter/linkedIn身份验证

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

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

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

我想我有两个选择:

  1. 将授权码在iOS的客户端和发送某种关键的与数据,它就可以验证服务器。

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

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

能做任何这样的事情的人能给我一些关于利弊的信息,OAuth或OpenId,或者一些例子的链接吗?

+0

相关文章:[iOS linkedin认证](http://stackoverflow.com/questions/28491280)。 – Mogsdad

回答

2

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

如果您打算对这些服务进行额外的API调用,您可以将客户端检索到的访问令牌传递给服务器进行存储和稍后使用,前提是您希望令牌具有长期存在性(即:脱机访问FB的许可)。

在任何情况下,这主要是用户体验决定。

+0

如果我理解正确,我可以在客户端上实现OAuth代码,以便他们可以在其设备上进行身份验证。然后,我可以将令牌存储在iOS客户端上,并将其发送到服务器进行存储。下次iOS客户端启动时,它可以将它的令牌发送到服务器,该服务器将其与先前存储的令牌相匹配。匹配意味着服务器现在知道它处理的是谁。 – drekka

+1

这可以工作。对于保证不会在会话之间改变的内容,您可能会比较安全。即:该系统上用户的ID或其唯一句柄。由于只有在客户端验证成功时才会获得该信息,因此只需向服务器发送服务名称和ID,服务器就可以查找关联的用户帐户。这将让他们也可以通过多种服务进行身份验证。 –

+0

嗨,@WesJohnson我有同样的问题,但没有找到任何答案,请回答:http://stackoverflow.com/questions/26781660/sdks-for-getting-auth-token-for-posting-上Facebook的Twitter的链接中,然后 – abdulrauf618

相关问题