2016-07-24 6 views
0

Я пытаюсь подключиться непосредственно к API БИ инструмента внутри Р. Документация по API перечислены завиток команду ниже, чтобы получить маркер аутентификации:Подключение к REST API инструмента BI, используя RCurl

curl -X POST -H "Content-Type: application/json" -d 
       '{ 
        "email": "[email protected]", 
        "password": "your_password" 
       }' 
https://app.datorama.com/services/auth/authenticate 

Далее, ниже является примером запроса JSON, который может использоваться для запроса данных:

{ 
"brandId": "9999", 
"dateRange": "CUSTOM", 
"startDate": "2016-01-01", 
"endDate": "2016-12-31", 
"measurements": [ 
    { 
     "name": "Impressions" 
    } 
], 
"dimensions": [ 
    "Month" 
], 
"groupDimensionFilters": [], 
"stringDimensionFilters": [], 
"stringDimensionFiltersOperator": "AND", 
"numberDimensionFiltersOperator": "AND", 
"numberMeasurementFilter": [], 
"sortBy": "Month", 
"sortOrder": "DESC", 
"topResults": "50", 
"groupOthers": true, 
"topPerDimension": true, 
"totalDimensions": [] 
} 

Я пытаюсь 1) перевести завиток команду выше, в R, чтобы получить требуется маркер аутентификации, и 2) запрос данных через сценарий JSON выше.

До сих пор я попытался с помощью httr библиотеки следующим образом:

library(httr) 
r <- POST('https://app.datorama.com/services/auth/authenticate', 
      body = list(
       brandId = "9999", 
       dateRange = "CUSTOM", 
       measurements = list(name="Impressions"), 
       dimensions = list(name="Month"), 
       startDate = "2016-01-01", 
       endDate = "2016-12-31" 
     ), 
      encode = "json", 
      authenticate("username", "password")) 

безрезультатно.

Документация API находится за защищенной паролем страницей, и поэтому я не могу ее связать. Сообщите мне, требуется ли дополнительная информация.

+0

Где код R используется, чтобы попытаться получить маркер аутентификации? – hadley

+0

Попробуйте пакет curlconverter. Он может преобразовать код завивки командной строки в выражение R. – Thomas

ответ

2

hrbrmstr абсолютно прав! вы должны создать два вызова api, первый из которых - аутентификация пользователя, а второй - запрос данных.

Ниже приведен полный рабочий пример использования API запросов Datorama из R. Не стесняйтесь обращаться в службу поддержки Datorama за любыми дополнительными вопросами.

library(httr) 

res <- POST("https://app.datorama.com/services/auth/authenticate", 
      body=list(email="[email protected]", 
         password="your_password"), 
      encode="json") 

token <- content(res)$token 

res_query <- POST(paste("https://app.datorama.com/services/query/execQuery?token=",token, sep=""), 
     body = list(
       brandId = "9999", 
       dateRange = "CUSTOM", 
       measurements = list(list(name = "Impressions")), 
       dimensions = list("Month"), 
       startDate = "2016-01-01", 
       endDate = "2016-12-31" 
     ), 
      encode = "json") 

cat(content(res_query, "text"), "\n") 
1

У меня нет доступа к их API-интерфейсу, и если бы у них был свободный уровень, он бы написал небольшую обертку pkg. Сказав, что,

curl -X POST \ 
    -H "Content-Type: application/json" \ 
    -d '{ "email": "[email protected]", 
      "password": "your_password" }' 

переводит:

library(httr) 

res <- POST("https://app.datorama.com/services/auth/authenticate", 
      body=list(email="[email protected]", 
         password="your_password"), 
      encode="json") 

Они не имеют своей документации API приложение онлайн бесплатно либо, но я буду считать, что он посылает обратно ответ JSON с некоторыми типами authorization_token и закодированная строка.

Вы, скорее всего, должны передать этот результат с каждые последующий вызов API (и, вероятно, будет время ожидания, когда первоначальный аут должен будет быть повторно поднят).

authenticate() используется для базового аутентификации HTTP, а не для этого типа API-интерфейса JSON/REST в API.

Ваш фактический вызов API выглядит отлично, кроме использования токена auth.

 Смежные вопросы

  • Нет связанных вопросов^_^