3

我试图弄清楚如何订阅我拥有 access_token 的页面的实时更新(但不是我的应用程序页面)。我正在使用 Koala gem,一切似乎都很好,但我似乎无法弄清楚如何指定要订阅的页面:

@updates = Koala::Facebook::RealtimeUpdates.new(:app_id => YOUR_APP_ID, :app_access_token => YOUR_ACCESS_TOKEN)
@updates.subscribe("page", "conversations", YOUR_CALLBACK_URL, YOUR_VERIFY_TOKEN)

以上是考拉说要实现的代码,但它没有说明如何选择我们要订阅的页面或在哪里插入page_access_token。

即使在查看 facebook示例时,它也没有任何地方可以输入页面访问令牌。

我在哪里指定我想要订阅的 Facebook 页面?

编辑:当您订阅“页面”“对话”时,您订阅的是哪个页面?所有这些都与 app_access_token 相关联?我如何知道哪些页面与 app_access_token 相关联?

4

2 回答 2

2

在您链接的示例中,有一些代码可以指定页面访问令牌:

查看底部的 PHP 脚本示例:

$session = new FacebookSession('<PAGE_ACCESS_TOKEN>');

要设置页面访问令牌,请查看

于 2015-01-30T11:30:03.077 回答
0

这是我在我的应用程序中实现 Koala 的方式,并且我已经成功地获得了页面的对话(不是通过 RealtimeUpdates)。这是我的做法 -

我将以下内容添加到我的Gemfile

gem 'omniauth-facebook'
gem 'koala'

我为 facebook 凭据创建了一个 YAML 文件 -

development:
   app_id: <APP ID>
   secret: <APP Secret>

我在下面添加了以下initializers内容config/initializers

1.Facebook 初始化程序为facebook.rb-

FACEBOOK_CONFIG = YAML.load_file("#{::Rails.root}/config/facebook.yml")[::Rails.env]

2.Omniauth 初始化程序为omniauth.rb-

Rails.application.config.middleware.use OmniAuth::Builder do  
    provider :facebook, FACEBOOK_CONFIG['app_id'], FACEBOOK_CONFIG['secret'], {: scope => 'read_mailbox'}
end

权限read_mailbox是关键。如果您不确定您是否有read_mailbox权限,您可能需要Status and Review在您的应用页面下的选项卡下请求它(见下面的屏幕截图) -

在此处输入图像描述

即使我没有使用RealTimeUpdates,我也会执行以下操作来获取对话 -

def get_conversations(page_id)
   access_token ||= Koala::Facebook::OAuth.new(FACEBOOK_CONFIG['app_id'], FACEBOOK['secret']).get_app_access_token

   graph = Koala::Facebook::GraphAPI.new(access_token)
   @fb_conversations = graph.get_object(page_id + '/conversations')
end

尝试使用您的访问令牌访问Graph API 资源{page_id}/conversations管理器,看看您是否遇到错误。

于 2015-03-10T22:00:15.763 回答