Rails - 如何从Facebook API检索用户的access_token

时间:2013-02-20 00:06:09

标签: ruby-on-rails ruby facebook access-token facebook-access-token

当用户通过Facebook注册我的应用时,我想显示他管理的所有页面。

这是我从FB API保存数据的方式:

  def self.create_user_from_facebook(auth_hash)
    self.create({
      :facebook_uid => auth_hash["uid"],
      :name => auth_hash["info"]["name"],
    })
  end

这里我是如何打印出页面列表的:

 - fbpages(@user).each do |page|
    = f.label :fbpage, value: page.identifier, :class => 'radio' do
      = f.radio_button :fbpage, page.identifier
      = link_to page.name, page.link, target: '_blank'

fbpages方法:

def fbpages(user)
    if user.fbtoken.present?
      begin
        fbpages = FbGraph::User.me(user.fbtoken).accounts
      rescue
        user.update_attribute(:fbtoken, nil)
        fbpages = nil
      end
    end
  end

fbtokenaccess_token。但是我怎么能得到这个令牌呢?我试图在auth_hash方法中打印出包含create_user_from_facebook的内容,但我没有看到 access_token

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以在FBGraph page上看到:

// code is set
// we'll send that and get the access token
graph.authorize({
    "client_id":      conf.client_id
  , "redirect_uri":   conf.redirect_uri
  , "client_secret":  conf.client_secret
  , "code":           req.query.code
}, function (err, facebookRes) {
  res.redirect('/UserHasLoggedIn');
});

code包含在用户登录Facebook应用程序后获取的重定向网址的参数中。获得此code后,即可使用此示例。