首页 文章

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

提问于
浏览
5

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

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

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

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

有任何想法吗?非常感谢 .

2 回答

  • 1
  • 2

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

    • 通过客户端的facebook SDK检索Facebook

    • 公开像 /facebook/login?facebook_token=XXX 这样的API

    • 一旦我从客户端获得facebook_token,我使用Koala从Facebook检索用户的信息(包括电子邮件)

    • 通过电子邮件验证用户

    • 为该用户生成 Doorkeeper::Token 并将其发送回客户端

相关问题