我有一个使用omniauth到facebook身份验证的应用程序。我还有一个用户访问令牌。我正在使用考拉来访问facebook graph api。但是,我不确定如何传递我的用户访问令牌koala来实际访问我的用户管理的Facebook页面。
如何获取用户管理的页面并传递访问令牌?
答案 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)