Как получить несколько полей для страницы с помощью Facebook Business SDK - PullRequest
0 голосов
/ 08 мая 2018

Недавние изменения, объявленные Facebook (например, 24 апреля и 1 мая 2018 ), привели к тому, что мы посмотрели на Facebook Business SDK, который, насколько я могу судить, является потомком Facebook Marketing / API объявлений Facebook.

Facebook указывает на их различные жемчужины на Github, но большинство примеров ссылаются на управление объявлениями и кампаниями. Например, facebook / facebook-ruby-business-sdk .

Используя пример test.rb со страницы Начало работы Facebook , я смог собрать следующий тест. Как вы можете видеть ниже, кажется, что каждый вызов метода для получения значения поля приводит к отдельному вызову 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-sdk и facebook-ruby-business-sdk в качестве тегов.

1 Ответ

0 голосов
/ 08 мая 2018

ОК, это ответ, но не обязательно ответ. Я думаю, что все еще должен быть лучший ответ, но вот то, что мы обнаружили.

Каждый раз, когда вызывается один из методов, который возвращает отдельное поле, вызывается 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",: valid_status => "not_verified"}

Было бы неплохо, если бы был более прямой способ получения атрибутов, но это еще не выяснилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...