创建用于获取页面信息的Facebook会话

时间:2010-03-11 05:30:46

标签: facebook facebooker

我正在尝试在我的用户管理员的页面上获取信息。此用户已授予我的fb_connect应用程序脱机访问权限。我保存了允许离线访问的session_key(它中包含用户的id)。我可以使用此会话密钥发布到此粉丝页面。但是当我尝试访问页面的信息时,我收到了SessionExpired错误。这没有意义。看下面的代码和输出:

p是一个'profile'对象,它包含三个相关的fb数据(user_id,session_key和page id)


>> fb_session = Facebooker::Session.create
=> #
>> fb_session.secure_with!(p.fb_session_key, p.fb_user_id, 0)
=> nil
>> fb_session.user.has_permission?("offline_access")
=> true
>> fb_session.user.has_permission?("publish_stream")
=> true
>> fb_session.user.has_permission?("read_stream")
=> true
>> pages = fb_session.fql_query("select fan_count from page where page_id = #{p.fb_page_id}")
Facebooker::Session::SessionExpired: Session key invalid or no longer valid
    ...
>> pages = fb_session.pages(:fields => {:page_ids => p.fb_page_id})
Facebooker::Session::SessionExpired: Session key invalid or no longer valid
    ...
>> pages = Facebooker::Session.create.fql_query("select fan_count from page where page_id = #{p.fb_page_id}")
=> [#]

也许我没有正确创建会话,或者离线访问可能无法访问用户的页面,即使我有权推送它。正如你所看到的,当我只使用anon会话时,我能够获得粉丝数,我猜这是公开的。有没有人对此有所了解?

1 个答案:

答案 0 :(得分:0)

您需要请求manage_pages权限,然后查询me/accounts图表对象以获取用户管理的网页列表(即帐户)。获得这些页面的列表后,您就可以使用页面ID获取每个页面的信息。