如何通过Facebook登录验证门卫?

时间:2014-03-28 11:45:34

标签: ruby-on-rails facebook facebook-graph-api devise doorkeeper

我有一个rails应用程序,我的用户可以使用Devise gem和Omniauth-facebook gem登录。他们可以是“普通”用户或Facebook用户。所有这一切都正常。

我在这个应用程序中的API也由门卫进行身份验证。从我的移动客户端,我可以发送用户和密码,他们可以使用access_token访问我的API。这可以正常工作。

现在,我希望我的Facebook用户可以通过他们的Facebook登录从移动应用程序访问我的API。有人知道我怎么能做到这一点?在使用Facebook登录后,我将获得一个令牌,我将能够访问有关用户的一些信息...但我如何连接到API?

注意:当您使用facebook登录rails应用程序时,Devise会创建一个包含提供程序和uid字段的新用户。

任何想法?非常感谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我能够通过以下步骤实现这一目标:

  1. 通过客户端的facebook SDK检索Facebook
  2. 公开类似/facebook/login?facebook_token=XXX
  3. 的API
  4. 一旦我从客户端获得facebook_token,我使用Koala从Facebook检索用户的信息(包括电子邮件)
  5. 通过电子邮件验证用户
  6. 为该用户生成Doorkeeper::Token并将其发送回客户端