繁体   English   中英

社交网络登录使用 iOS

[英]Social networking login using iOS

我正在编写一个适用于我自己的服务器的 iPhone 应用程序。

基本上,这是一个用户可以发帖的论坛。 我不希望用户在我的服务器上登录帐户,但我更希望他们使用他们拥有的任何现有帐户登录:Facebook、Linkedin、Foursquare 等。所以从应用程序本身来看,我希望他们能够使用他们现有的帐户登录,这将允许他们在论坛上发帖。

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

谢谢

有关类似讨论,请参阅此问题(仅限于 Facebook 登录)。 这是应该发生的事情的高级概述(取自我链接到的那个讨论):

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

在电话上,您将需要一些 OAuth 库来允许用户使用其他服务进行身份验证。 You'll probably want to use the Facebook iOS SDK to allow them to use Facebook and use one of the suggested OAuth libraries here for your other authentication services. 我只使用了 Facebook SDK,所以我不能说一般的 OAuth 库。

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

假设用户可以使用多个服务来访问他们的帐户,您还需要某种方式将两个服务连接到同一用户(可能通过 email 地址)。

由您决定您的应用程序和服务器的通信方式。 我将 go 用于 JSON+REST API 用于与服务器通信。

我正在探索 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. 谷歌
  4. Instagram
  5. 领英

加上自定义提供程序

Auth0 支持:

  1. Facebook
  2. Twitter
  3. 谷歌
  4. 微软(Windows Live)
  5. 雅虎
  6. Instagram
  7. 亚马逊
  8. 领英
  9. Github
  10. PayPal
  11. vKontakte
  12. Yandex
  13. 盒子
  14. 百度
  15. 任人(小内)
  16. 微博
  17. Shopify
  18. Wordpress
  19. 抱怨
  20. 声云

以及自定义提供程序

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM