Rails:Facebook Connect:客户端/服务器端还是两者?

时间:2013-09-12 07:39:00

标签: ruby-on-rails facebook oauth facebook-javascript-sdk

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

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

我的问题是:

  1. 我可以只进行客户端集成吗?

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

  3. 选择一个的优点和缺点是什么?

  4. 两者兼有的好处是什么?

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

2 个答案:

答案 0 :(得分: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 / gem)的最佳方法是什么?

答案 1 :(得分:1)

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

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

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