使用iOS进行社交网络登录

时间:2011-07-09 05:40:15

标签: php iphone ios facebook oauth

我正在编写一个与我自己的服务器兼容的iPhone应用程序。

基本上,它是一个用户可以发布的论坛。我不希望用户在我的服务器上登录帐户,但我更喜欢他们使用他们拥有的任何现有帐户登录:Facebook,Linkedin,Foursquare等。 因此,从应用程序本身,我希望他们能够使用现有帐户登录,然后允许他们在论坛上发帖。

我的问题是:当用户发布消息时,如何验证他是否使用任何服务登录?我需要在客户端和服务器端验证它。我打算用PHP编写服务器端。

由于

3 个答案:

答案 0 :(得分:11)

请参阅this question进行类似讨论(仅限Facebook登录)。以下是对应该发生的事情的高级概述(取自我所链接的讨论):

  1. 用户在手机上打开应用程序。选择要进行身份验证的服务。
  2. 通过一个可用的服务(Facebook,Twitter,foursquare等)进行身份验证并获得一些特殊的access token
  3. 您的应用获取令牌并将其发送到您的服务器。
  4. 您的服务器收到令牌并验证它。它根据服务的API进行检查,并且(至少对于Facebook和Twitter)获取相应的用户ID。
  5. 假设有效ID,您的服务器会检查某个用户是否已使用过用户ID。如果是,则将其记录下来。如果尚未创建用户标识,则服务器会创建与该用户标识关联的自己的用户记录并将用户登录。在任何一种情况下,用户最终都会登录并且您的服务器出现问题{/ 1}}到您的应用。
  6. session key用于您的应用和服务器之间的所有进一步通信,直到用户退出。
  7. 在手机上,您将需要一些OAuth库,以允许用户使用其他服务进行身份验证。您可能希望使用Facebook iOS SDK允许他们使用Facebook并使用建议的OAuth libraries here之一来进行其他身份验证服务。我只使用了Facebook SDK,所以我不能说一般的OAuth库。

    登录后,手机不应存储session key,只能存储access token

    假设用户可以使用多个服务访问其帐户,您还需要某种方式将两个服务连接到同一个用户(可能通过电子邮件地址)。

    由您来决定您的应用和服务器的通信方式。我会使用JSON + REST API与服务器进行通信。

答案 1 :(得分:0)

让您的用户使用多种服务登录的另一个选项是Socialize(www.getsocialize.com)。它是一个开源SDK,可以管理您的用户和身份验证,因此您无需执行cbrauchli上面概述的所有步骤。

答案 2 :(得分:0)

我正在研究2020年是否存在使用第三方库允许使用社交帐户登录的更好/易于使用/实施的选项。并找到两个选项:

  1. AuthorizeMe-https://github.com/rubygarage/authorize-mehttps://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. 雅虎
  6. Instagram
  7. 亚马逊
  8. LinkedIn
  9. Github
  10. PayPal
  11. vKontakte
  12. Yandex
  13. 盒子
  14. 百度
  15. 人人(小内)
  16. 微博
  17. Shopify
  18. Wordpress
  19. Yammer
  20. SoundCloud

以及自定义提供程序

免责声明:我不隶属于Auth0或AuthorizeMe。