0

Facebook 最近宣布的更改(例如2018 年 4 月 24 日和 5 月 1 日)导致我们关注 Facebook Business SDK,据我所知,它是 Facebook Marketing/Facebook Ads API 的后代。

Facebook 指出了他们在 Github 上的各种宝石,但大多数示例都参考了管理广告和活动。例如facebook/facebook-ruby-business-sdk

使用Facebook 入门页面中的 test.rb 示例,我能够拼凑出以下测试。正如您在下面看到的,似乎每个检索字段值的方法调用似乎都会导致单独的 API 调用(或至少某种形式的网络访问):

1 > FacebookAds.configure do |config|
2 >       config.access_token = '<deleted>'
3?>     config.app_secret = '<deleted>'
4?>   end
 => #<FacebookAds::Config:0x007fd1f453ade0 @access_token="<deleted>", @app_secret="<deleted>"> 

5 >   page = FacebookAds::Page.get('125200950858892', "about,fan_count,impressum,username")
 => #<FacebookAds::Page {:id=>"125200950858892"}> 

6 > page.__all_fields
 => #<Set: {:about, :fan_count, :impressum, :username, :id}> 

7 > page.about
 => "Brandle® delivers social media security & brand protection.  It's the easiest way to Discover, Inventory, Monitor & Patrol your social presence!" 

# Turn wifi off

8 >   page.username
Faraday::ConnectionFailed: getaddrinfo: nodename nor servname provided, or not known

# Turn wifi on

9 >   page.username
 => "BrandleSystem" 

Graph API 本身使得检索页面(节点)的多个字段非常容易,所以我不明白为什么新的 SDK 表面上看起来如此低效(或至少记录不充分)。

我想我错过了一些相当明显的东西。有一个批处理 API,但我认为这更多的是一次检索多个页面,而不是检索单个页面的多个字段。

我希望其他人已经弄清楚了这一点。

谢谢你。

PS:如果有人有我所缺乏的声望点,我认为这个线程应该有facebook-business-sdkfacebook-ruby-business-sdk作为标签。

4

1 回答 1

0

好的,这是一个答案,但不是必须答案。我认为仍然必须有一个更好的答案,但这就是我们所发现的。

每次调用返回单个字段的方法之一时,都会调用 API。从返回的值可以看出page.last_api_response.headers["date"]。但是,一旦检索到第一个字段,所有字段都可用并且可以通过调用page.attributes或来检索page.to_hash

006 >   page = FacebookAds::Page.get('125200950858892', "about,username,name,impressum,verification_status")
 => #<FacebookAds::Page {:id=>"125200950858892"}> 
007 > page.last_api_response
 => nil 
008 > page.attributes
 => {:id=>"125200950858892"} 

010 >   page.username
 => "BrandleSystem" 
012 > page.attributes
 => {:id=>"125200950858892", :about=>"Brandle® delivers social media security & brand protection.  It's the easiest way to Discover, Inventory, Monitor & Patrol your social presence!", :username=>"BrandleSystem", :name=>"Brandle", :verification_status=>"not_verified"} 
013 > page.last_api_response.headers["date"]
 => "Tue, 08 May 2018 03:19:12 GMT" 

015 >   page.name
 => "Brandle" 
017 > page.attributes
 => {:id=>"125200950858892", :about=>"Brandle® delivers social media security & brand protection.  It's the easiest way to Discover, Inventory, Monitor & Patrol your social presence!", :username=>"BrandleSystem", :name=>"Brandle", :verification_status=>"not_verified"} 
018 > page.last_api_response.headers["date"]
 => "Tue, 08 May 2018 03:20:02 GMT" 

020 >   page.to_hash

=> {:id=>"125200950858892", :about=>"Brandle® 提供社交媒体安全和品牌保护。这是发现、盘点、监控和巡逻您的社交形象的最简单方法!", :username=>"BrandleSystem ", :name=>"Brandle", :verification_status=>"not_verified"}

如果有一种更直接的方法来检索属性,那就太好了,但这还没有出现。

于 2018-05-08T03:31:34.883 回答