使用iOS进行社交网络登录

4
我正在编写一款iPhone应用程序,它与我的服务器进行交互。基本上,这是一个用户可以发布帖子的论坛。我不想让用户在我的服务器上注册账户,而是更倾向于让他们使用已有的账户登录:Facebook、Linkedin、Foursquare等。因此,我希望他们可以从应用程序中使用现有的账户登录,然后就能够在论坛上发布帖子了。
我的问题是:当用户发布消息时,我如何验证他是否已经使用某个服务登录?我需要在客户端和服务器端都进行验证。我计划使用PHP编写服务器端代码。
谢谢。
3个回答

11

查看这个问题可以了解类似的讨论(仅限于Facebook注册)。以下是高级别概述(来自我链接到的那个讨论):

  1. 用户在手机上打开应用程序。选择要进行身份验证的服务。
  2. 通过可用服务之一进行身份验证(Facebook、Twitter、foursquare等),并获取一些特殊的访问令牌
  3. 您的应用程序获取令牌并将其发送到您的服务器。
  4. 您的服务器接收令牌并验证它。它会检查它是否与服务的API相匹配,并(至少对于Facebook和Twitter)获取相应的用户ID。
  5. 假设ID有效,您的服务器将检查用户ID是否已被某个用户使用。如果是,则记录登录信息。如果未创建用户ID,则您的服务器将创建与该用户ID相关联的自己的用户记录,并记录该用户的登录信息。在任何情况下,用户都已登录,您的服务器向您的应用程序发出会话密钥
  6. 会话密钥用于您的应用程序和服务器之间的所有进一步通信,直到用户注销。

在手机上,您需要一些OAuth库,以允许用户使用另一个服务进行身份验证。您可能需要使用Facebook iOS SDK来允许他们使用Facebook,并使用此处建议的OAuth库之一来处理其他身份验证服务。我只使用过Facebook SDK,因此无法对通用OAuth库发表意见。

登录后,手机不应存储访问令牌,只能存储会话密钥

假设用户可以使用多个服务来访问他们的账户,你还需要一种连接两个服务到同一个用户的方式(可能是通过电子邮件地址)。

关于应用程序和服务器之间的通信方式,这取决于您自己。我建议使用JSON+REST API与服务器进行通信。


这正是我所想的,但我不确定是否还需要在我的网站上创建一条记录。谢谢! - Gilad Novik

0
另一个让用户使用多个服务登录的选择是 Socialize(www.getsocialize.com)。它是一个开源 SDK,可以管理您的用户和身份验证,因此您不必实现 cbrauchli 上面列出的所有步骤。

0

我正在探索是否有更好/更易于使用/实现的选项,使用第三方库在2020年允许使用社交账户登录。我找到了两个选项:

  1. AuthorizeMe - https://github.com/rubygarage/authorize-me & https://rubygarage.org/blog/authorizeme-ios-libary
  2. Auth0 - https://auth0.com/learn/social-login/ & https://auth0.com/blog/using-centralized-login-to-add-authentication-to-your-ios-apps/

AuthorizeMe支持:

  1. Facebook
  2. Twitter
  3. Google
  4. Instagram
  5. LinkedIn

以及自定义提供商

Auth0支持:

  1. Facebook
  2. Twitter
  3. Google
  4. Microsoft (Windows Live)
  5. Yahoo
  6. Instagram
  7. Amazon
  8. LinkedIn
  9. Github
  10. PayPal
  11. vKontakte
  12. Yandex
  13. Box
  14. Baidu
  15. 人人网(校内)
  16. 微博
  17. Shopify
  18. WordPress
  19. Yammer
  20. SoundCloud

还有自定义提供商

声明:我与Auth0或AuthorizeMe无关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接