Ruby gem facebook_ads exception_with_response: 400 Bad Request - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь запросить идеи API маркетинга в Facebook, используя рубиновый гем facebook_ads. https://github.com/tophatter/facebook-ruby-ads-sdk

Я создал приложение и у меня есть разрешения редактора на соответствующих страницах для моей компании.

Затем я создал токен доступа пользователя с этой страницы после выбора разрешений ads_management.

Далее я следовал инструкциям на этой странице , чтобы получить маркер постоянного доступа к странице.

С кодом ниже я получаю эту ошибку:

/ вар / Библиотека / камни / 2.3.0 / драгоценные камни / отдых-client- / VAR / Библиотека / камни / 2.3.0 / драгоценные камни / restclient-2.0.2 / Библиотека / restclient / abstract_response.rb: 223 : в exception_with_response': 400 Bad Request (RestClient::BadRequest) from /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient/abstract_response.rb:103:in вернись! ' из /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient/request.rb:809:in process_result' from /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient/request.rb:725:in блок в передаче ' из /usr/lib/ruby/2.3.0/net/http.rb:853:in start' from /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient/request.rb:715:in передать ' из /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient/request.rb:145:in execute' from /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient/request.rb:52:in execute ' из /var/lib/gems/2.3.0/gems/rest-client-2.0.2/lib/restclient.rb:67:in get' from /var/lib/gems/2.3.0/gems/facebook_ads-0.6.6/lib/facebook_ads/base.rb:15:in get ' из /var/lib/gems/2.3.0/gems/facebook_ads-0.6.6/lib/facebook_ads/ad_account.rb:10:in `all '

Я также пробовал этот код с временным кодом доступа пользователя, но получил тот же результат.

Вот мой код

#!/usr/bin/ruby

require 'facebook_ads'

MY_PAGE_PERMANENT_ACCESS_CODE = 'my access code'

APP_SECRET = 'my app secret'

FacebookAds.access_token = MY_PAGE_PERMANENT_ACCESS_CODE

FacebookAds.app_secret = APP_SECRET

accounts = FacebookAds::AdAccount.all

1 Ответ

0 голосов
/ 19 января 2019

Оказывается, я использовал маркер постоянного доступа к странице, который не входил в область вызова API. Мне нужно было использовать временный код доступа пользователя.

E, [2019-01-19T00: 08: 49.366067 # 19868] ОШИБКА -: GET / me / adaccounts OAuthException / 100: (# 100) Попытка доступа к несуществующему полю (adaccounts) для типа узла (Page) RestClient :: BadRequest: 400 Bad Запрос

В консоли pry для гема я запустил эту команду, чтобы установить переменную учетной записи:

pry(main)> account = FacebookAds::AdAccount.find('act_MY_ACCOUNT_ID')

и я получаю эту ошибку:

E, [2019-01-19T00: 12: 24.760545 # 20188] ОШИБКА -: GET / me / adaccounts OAuthException / 2635: (# 2635) Вы вызываете устаревшую версию Рекламный API. Пожалуйста, обновите до последней версии: v3.2. RestClient :: BadRequest: 400 плохих запросов

Итак, я выполнил эту команду:

pry(main)> FacebookAds.base_uri = 'https://graph.facebook.com/v3.2'

"https://graph.facebook.com/v3.2"

Затем pry(main)> account = FacebookAds::AdAccount.find('act_MY_ACCOUNT_ID') снова.

Наконец я побежал:

pry(main)> account.ad_insights

но в результате получается пустой массив, когда я знаю, что он не должен быть пустым. Я собираюсь пропустить гем и использовать Ruby net / http для прямого запроса к API.

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