如何管理facebook在我的网站上刷新的用户页面?

时间:2014-01-17 23:45:07

标签: ruby-on-rails koala

我有一个使用omniauth到facebook身份验证的应用程序。我还有一个用户访问令牌。我正在使用考拉来访问facebook graph api。但是,我不确定如何传递我的用户访问令牌koala来实际访问我的用户管理的Facebook页面。

如何获取用户管理的页面并传递访问令牌?

2 个答案:

答案 0 :(得分:0)

api = Koala::Facebook::API.new(access_token)

pages = api.get_connections(user_id, "accounts")

这会返回您的用户有权访问的网页集合,在每个网页的内部都有一个" access_token"属性,该令牌是您需要用来管理该特定页面的标记

答案 1 :(得分:0)

由于您使用omniauth进行Facebook身份验证,因此您可以在scope: manage_pages

中定义提供程序时添加omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], scope: 'publish_actions, email, manage_pages']
end

这将询问用户管理页面所需的权限。

现在,当你有了permision时,使用Koala获取用户使用Graph API调用的页面列表

koala = Koala::Facebook::API.new(@access_token)

# retrieve collection fo all your managed pages: returns collection of hashes with page id, name, category, access token and permissions
pages = @user_graph.get_connections('me', 'accounts')

使用上次通话结果中的access_token属性。

# get access token for first page
first_page_token = pages.first['access_token']

# or: retrieve access_token for a given page_id
page_token = @user_graph.get_page_access_token(page_id)

使用页面令牌作为页面进行身份验证,并正常使用Graph API

@page_graph = Koala::Facebook::API.new(page_token)

@page_graph.get_object('me') # I'm a page
@page_graph.get_connection('me', 'feed') # the page's wall
@page_graph.put_wall_post('post on page wall') # post as page, requires new publish_pages permission
@page_graph.put_connections(page_id, 'feed', :message => message, :picture => picture_url, :link => link_url)