3

我正在使用我的 Ruby on Rails 应用程序进行 Facebook 集成以验证用户身份。我一直在浏览在线可用的教程和一些 SO 帖子。

我遇到了一些方法来做到这一点,其中大多数都在谈论去年这篇文章中解释的内容。http://railscasts.com/episodes/360-facebook-authentication?view=asciicast

我的问题是:

  1. 我可以只使用客户端集成吗?

  2. 为什么需要服务器端集成?

  3. 选择一个有什么好处和坏处?

  4. 两者都做有什么好处?

  5. 进行服务器端集成(哪些 gem/gems)的最佳方法是什么?

4

2 回答 2

4

我可以只使用客户端集成吗?

  • 通过客户端集成,我假设您只是使用 FB javascript 小部件(如 facebook like 按钮(https://developers.facebook.com/docs/reference/plugins/like/))进行引用。您绝对可以这样做,并且它根本不需要您的用户对您的应用程序进行“身份验证”(即通过 oAuth 过程来授予您的应用程序权限等)。相反,它只会将它们弹出到 facebook 登录页面并直接张贴在他们的墙上/喜欢等。

为什么需要服务器端集成?

  • 作为对第一个问题的回答的延续,有时您可能实际上希望用户通过 oAuth 流程,以便您可以在服务器端执行其他操作。这可能包括(取决于您要求的权限)获取电子邮件/图片、国家/地区等信息。您的用户。或者它可能与实现特定功能有关,例如拉朋友的朋友并查看当前正在使用您的应用程序的人。

选择一个有什么好处和坏处?

  • 两者都是与 FB 集成的可接受方式,但使用 JS 小部件并不是真正的登录集成,它只是重定向到 FB 以便他们执行某些操作。如果您真的想让某人在您的网站上“使用 facebook 登录”,则必须使用服务器端集成(即 oAuth)
  • 这反过来意味着在 oAuth 过程之后,您将拥有一个“身份验证”(即令牌),它代表来自 FB 的用户,该用户与服务器端数据库中的实际“用户”对象相关联。
  • 如上所述,由于许多原因,这很有用。如果您不需要做复杂的事情,而只是希望某人能够“喜欢”某事或“分享到墙上”,您可能不需要服务器端集成,但再次如前所述 - 如果您确实需要“登录facebook”,它绝对是 oAuth 并且需要服务器端集成。

两者都做有什么好处?

  • 这里有很多话要说......但几乎见上面的答案,如果您有更具体的问题,可以进入更详细的信息。

进行服务器端集成(哪些 gem/gems)的最佳方法是什么?

于 2013-09-12T07:58:51.347 回答
1

问题有点模糊。如果您所说的集成是身份验证,那么答案是唯一的区别是客户端版本需要javascript才能工作,而服务器端版本不需要(并且实现略有不同)。

在我看来,在 Rails 中做任何类型的 facebook 工作的最好方法是Koala gem(它使用 Omniauth)。它有很好的文档记录,它使浏览可怕的 FB API 几乎可以忍受。

同样,如果您问的是身份验证,那么没有区别。使用 Koala/Omniauth,您可以从 JS SDK 生成的 cookie 中提取用户信息,就像使用基于服务器端重定向的登录一样。

于 2013-09-12T08:27:03.803 回答