【问题标题】:Facebook authentication over API通过 API 进行 Facebook 身份验证
【发布时间】:2014-06-13 21:48:28
【问题描述】:

我有一个 ruby​​ on rails 应用程序,目前支持使用 devise / omniauth 进行 facebook 身份验证。

正在构建一个需要支持 facebook 身份验证的 iOS 客户端。

我的问题是,如何使用访问令牌服务器端在omniauth 回调之外获取用户的电子邮件?

我的理解是,omniauth 提供了一些中间件,在 facebook 回调中将包含所有信息的身份验证哈希写入 request.env['omniauth.auth']

见:https://github.com/mkdynamic/omniauth-facebook

我认为,对于 iOS 客户端,流程有点不同:

  1. 用户在客户端登录 facebook。
  2. 用户同意授予应用访问权限。
  3. 客户端应用程序将 access_token 发布到 rails API。
  4. Rails 应用通过 facebook 验证访问令牌并检索用户详细信息。

这是第 4 步,我不知道该怎么做。

基本上,一旦我有了访问令牌,当我不在omniauth 回调中时,如何手动获取身份验证哈希?

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-3 omniauth facebook-authentication


    【解决方案1】:

    经过反复试验,发现以下使用考拉 gem 获取用户电子邮件的方法:

    @graph = Koala::Facebook::API.new(TOKEN, APP_SECRET)
    @graph.get_object('me', :fields => ['email'])
    

    【讨论】:

      【解决方案2】:

      尝试使用 gem "Koala"

      例子:

      @graph = Koala::Facebook::API.new(oauth_access_token)
      profile = @graph.get_object("me")
      

      【讨论】:

      • 据我了解,这只是 facebook 图形 API 的包装。我可以通过调用 graph.facebook.com/me?access_token=<ACCESS_TOKEN> 获得相同的信息。这不包括用户电子邮件。现在的问题真的变成了:一旦用户授权我的应用程序,我如何检索用户的电子邮件?
      猜你喜欢
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 2013-06-01
      • 2021-07-18
      • 2015-12-08
      • 2016-04-23
      相关资源
      最近更新 更多