Skip to content

Commit

Permalink
Migrate to API v10.0
Browse files Browse the repository at this point in the history
Namespace, News, Description, Vignetts etc
  • Loading branch information
selesnow authored Apr 16, 2021
1 parent efad863 commit 0bfb90b
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 39 deletions.
4 changes: 2 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Package: rfacebookstat
Type: Package
Title: Load Data from Facebook API Marketing
Version: 2.2.3
Date: 2021-01-06
Version: 2.3.0
Date: 2021-04-16
Authors@R:
c(person(given = "Alexey",
family = "Seleznev",
Expand Down
7 changes: 7 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ export(fbGetBusinessManagersUsers)
export(fbGetCatalogs)
export(fbGetSettings)
export(fbGetCostData)
export(fbGetLogins)
export(fbSetUsername)
export(fbSetAccount)
export(fbSetBusinessId)
export(fbSetTokenPath)
export(fbSetApiVersion)
importFrom(jsonlite, fromJSON)
importFrom(jsonlite, toJSON)
importFrom(jsonlite, validate)
Expand Down Expand Up @@ -57,6 +63,7 @@ importFrom(tidyr, replace_na)
importFrom(tidyr, unite)
importFrom(tidyselect, matches)
importFrom(stringr, str_interp)
importFrom(stringr, str_glue)
importFrom(stringr, str_split)
importFrom(stringr, str_c)
importFrom(stringr, str_remove_all)
Expand Down
11 changes: 9 additions & 2 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# rfacebookstat 2.2.3.9000
# rfacebookstat 2.3.0

Дата релиза: 2021-01-06
Дата релиза: 2021-04-16

* Пакет переведён на работу с Facebook Markketing API v10.0
* Добавил в результат возвращаемый функцией `fbGetAdCreative()` поле `image_url`.
* Внесены изменения в парсинг ответа от API в функции `fbGetAdSets()`, т.к. старый парсер сбивался если поле `pacing_type` содержало сразу несколько значений.
* Внесены изменения в парсинг ответа от API в функции `fbGetPages()`, так же к ответу данной функции добавлено поле `account_id`, с информацией о том, из какого рекламного аккаунта данная страница получена.
* В пакет добавлена функция `fbGetLogins()`, которая выводит список всех логинов под которыми вы проходили авторизацию, и позволяет изменять логин выбрав его номер.
* В пакет добавлено 5 функций для удобной установки и изменения опций пакета: `fbSetUsername()`, `fbSetAccount()`, `fbSetBusinessId()`, `fbSetTokenPath()`, `fbSetApiVersion()`.
* В связи с изменениями в Facebook Marketing API теперь нельзя с помощью функции `fbGetMarketingStat()` запрашивать данные старше 37 месяцев. В `date_preset` теперь нельзя указать `'lifetime'`, вместо него используйте `'maximum'` который вернёт данные за послдение 37 месяцев.
* Актуализирована виньетка по авторизации.

# rfacebookstat 2.2.2

Expand Down
72 changes: 39 additions & 33 deletions tests/main_tests.R
Original file line number Diff line number Diff line change
@@ -1,42 +1,48 @@
library(rfacebookstat)
library(dplyr)

# accounts
bm <- fbGetBusinessManagers()
my_acs <- fbGetAdAccounts()
bm_accounts <- fbGetAdAccounts(bm$id[1])
test_accs <- sample_n(bm_accounts, size = 10, replace = FALSE)$id

camp <- fbGetCampaigns(test_accs)
adsets <- fbGetAdSets(test_accs)
ads <- fbGetAds(test_accs)
creo <- fbGetAdCreative(test_accs)
apps <- fbGetApps()
pages <- fbGetPages(test_accs)
videos <- fbGetAdVideos(my_acs$id[4:10])
# objects
camp <- fbGetCampaigns(test_accs)
adsets <- fbGetAdSets(test_accs)
ads <- fbGetAds(test_accs)
creo <- fbGetAdCreative(test_accs)
apps <- fbGetApps()
pages <- fbGetPages(test_accs)
videos <- fbGetAdVideos(my_acs$id[4:10])
conversions <- fbGetAdAccountsConversions()
as_tibble(pages)

fb_data.disable_reason <-
tibble(reason_id = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
reason_name = c("NONE",
"ADS_INTEGRITY_POLICY",
"ADS_IP_REVIEW",
"RISK_PAYMENT",
"GRAY_ACCOUNT_SHUT_DOWN",
"ADS_AFC_REVIEW",
"BUSINESS_INTEGRITY_RAR",
"PERMANENT_CLOSE",
"UNUSED_RESELLER_ACCOUNT",
"UNUSED_ACCOUNT"))

save(fb_data.disable_reason, file = "D:/packlab/github/testspace/rfacebookstat/R/sysdata.rda")
# users
bm_users <- fbGetBusinessManagersUsers(bm$id[1])
bm_user_accounts <- fbGetBusinessUserAdAccounts(bm_users$id[7], business_id = bm$id[1])
# statistic
simple_stat <- fbGetMarketingStat(
test_accs,
date_start = Sys.Date() - 12,
date_stop = Sys.Date() - 1)
action_stat <- fbGetMarketingStat(
test_accs,
level = "adset",
fields = "campaign_name,
adset_name,
impressions,
clicks,
reach,
spend,
actions,
action_values",
date_preset = 'last_7d',
breakdowns = 'publisher_platform',
attribution_window = c('1d_view','7d_click'),
action_breakdowns = "action_type"
)

fbGetToken

library(httr)
tkn <- fbAuth()
ans <- DELETE("https://graph.facebook.com/1246563312029308/permissions?access_token=EAACg7dbgLXMBACgDSVdhZAHjNY6RsxZC59csSGZB1hMMPe9yvH2qd5oEgwgiyL3HHKpdObrVZAkRJnZC7NlPxXAUy8qXe6jVFgZCwHA3zax6UCz8xKDYF4gFTNyZCtflddTZAPBDaJZBwh7JbuQIyv6n08Lh7EhGBmkWGZBxy3NONhnwT14HoVw6Ng
")
ans2 <- content(ans,as = "parse", "text/html" )

print()
# auth tets
# owner
fbAuth('selesnow')
# test user
fbAuth('[email protected]')
rfacebookstat:::fbRevokeAppPrivilegies()
15 changes: 14 additions & 1 deletion vignettes/rfacebookstat-authorization.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ Token load from C:/facebook/credentials/.rfb_auth.rds
Функция `fbAuth()` по умолчанию использует встроенное приложение, но при необходимости вы можете создать собственное приложение и пройти процесс авторизации через него.

## Создание и настройка собственного приложения для авторизации в Facebook API
Подробно о приложениях, их регистрации и настройке можно узнать в официальной [справке](https://developers.facebook.com/docs/apps).
Подробно о приложениях, их регистрации и настройке можно узнать в официальной [справке](https://developers.facebook.com/docs/development).

Для создания своего приложения необходимо выполнить следующие действия:

Expand Down Expand Up @@ -252,6 +252,14 @@ options(rfacebookstat.username = "seleznev_a",

После установки опций каждая из функций пакета будет запрашивать значения большинства аргументов именно из опций, что избавит вам от излишнего дублирования этих значений в коде.

Так же для установки опций в пакете реализован набор функций с префиксом `fbSet*()`.

* `fbSetUsername(username)` - установка имя пользователя
* `fbSetAccount(accounts_ids)` - установка идентификатор аккаунтов
* `fbSetBusinessId(business_ids)` - установка идентификаторов бизнес менеджеров
* `fbSetTokenPath(token_path)` - установка пути к папке для работы с токенами
* `fbSetApiVersion(api_version)` - установка версии API

## Приоритет переменных для авторизации

В каждом запросе к API необходимо передавать учётные данные, при этом каждая из функций пакета осуществляет поиск учётных данных по следующему пути.
Expand All @@ -268,3 +276,8 @@ options(rfacebookstat.username = "seleznev_a",
С помощью опций устанавливать дефолтные значения для определения нужного бизнес менеджера и списка аккаунтов под каждый конкретный скрипт.

Данный подход избавит вас от избыточности и дублирование в коде.

## Получить список логинов под которыми была пройдена автоизация

С помощью функции `fbGetLogins()` вы можете запрашивать список логинов, под которыми вы уже успешно прошли авторизацию, и переключаться между ними.

2 changes: 1 addition & 1 deletion vignettes/rfacebookstat-get-statistics.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ JSON: `[{"field":"clicks","operator":"LESS_THAN","value":"500"},{"field":"impres
## Лимиты API и аргумент request_speed
По использованию аргумента `request_speed` есть целая [статья](https://alexeyseleznev.wordpress.com/2017/12/26/rfacebookstat-1-5-0-%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%B0%D1%80%D0%B3%D1%83%D0%BC/), но я всё же немного опишу зачем данный аргумент нужен.

В API Facebook на данный момент существует 2 уровня доступа к API ([раздел в справке](https://developers.facebook.com/docs/marketing-api/access) API Facebook):
В API Facebook на данный момент существует 2 уровня доступа к API ([раздел в справке](https://developers.facebook.com/docs/marketing-api/overview/authorization) API Facebook):

* Разработка - Тестирование приложений с помощью API.
* Стандартный уровень доступа для управления рекламой - Дополнительные ресурсы, например менее строгие ограничения количества обращений, а также возможность принять участие в программе для партнеров Facebook.
Expand Down

0 comments on commit 0bfb90b

Please sign in to comment.