Аутентификация Brightcove Analytics API в R

Я пытаюсь аутентифицировать Brightcove Analytics API (OAuth 2.0) с R. Моей первой попыткой было использование функций oauth в пакете httr, и я попытался выполнить следующие действия.

1) Создайте переменную для моего приложения, используя открытый и секретный ключ. Готово:

library("httr")
myapp <- oauth_app("MyBrightcoveApp", key="mykeyhere", secret = "mysecrethere")

2) Найдите настройки OAuth для Brightcove. Для функции oauth_endpoint() требуется URL-адрес доступа, который я нашел "https://oauth.brightcove.com/v3/access_token", и URL-адрес авторизации, который я не нашел. Я не уверен, что Brightcove разрешает аутентификацию учетной записи в браузере.

Моей следующей попыткой было использовать функцию httr::POST(). Я посмотрел пример кода Brightcove node.js:

var request = require('request');
var client_id = "{your_client_id}";
var client_secret = "{your_client_secret}";
var auth_string = new Buffer(client_id + ":" + client_secret).toString('base64');
console.log(auth_string);
request({
method: 'POST',
url: 'https://oauth.brightcove.com/v3/access_token',
headers: {
    'Authorization': 'Basic ' + auth_string,
    'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'grant_type=client_credentials'
}, function (error, response, body) {
console.log('Status: ', response.statusCode);
console.log('Headers: ', JSON.stringify(response.headers));
console.log('Response: ', body);
console.log('Error: ', error);
});

который я пытаюсь перевести на R. Я начал с:

library(httr)
client_id <- "myClientIDhere"
client_secret <- "mySecretHere"
auth_string <- paste0(client_id, ":", client_secret)

но я не могу получить необходимые данные в свой запрос POST.

myresponse <- POST(myrequest, username=auth_string, httpheader='Content-type: application/x-www-form-urlencoded', body = 'grant_type=client_credentials'  )

показывает myresponse$request$auth_token как NULL. Так же

myresponse <- POST(myrequest, authenticate(client_id, client_secret), httpheader='Content-type: application/x-www-form-urlencoded', body = 'grant_type=client_credentials'  )

Есть идеи, что мне может не хватать?


person Sharon    schedule 17.02.2016    source источник
comment
Быстрый взгляд: вам нужно закодировать в base64 файл auth_string. Для этого см. пакет base64enc.   -  person Thomas    schedule 18.02.2016
comment
Спасибо, я также попробовал auth_string ‹- RCurl::base64Encode(paste0(client_id,:,client_secret)) безуспешно   -  person Sharon    schedule 18.02.2016


Ответы (1)


Это очень странная система аутентификации, и она не очень похожа на OAuth. Похоже, что ключ использует обычную аутентификацию для получения токена доступа:

library(httr)

id <- "ee6fb53d-6e0d-40f4-84f9-dc043f6f3399"
secret <- "a33sgCuU_WLFm89oBcgl0FCpdLZhtsbHIunNLJWVBwiir5MCGPinHoORvSw4YnwjURZuZa2b-NGFBNqUvevv3w"

r <- POST("https://oauth.brightcove.com/v3/access_token", 
  body = list(grant_type = "client_credentials"),
  authenticate(id, secret),
  encode = "form"
)
stop_for_status(r)
token <- content(r)$access_token

(Этот идентификатор и секрет предназначены для моей бесплатной 30-дневной учетной записи, в которой ничего нет, и должны позволить вам убедиться, что код работает.)

person hadley    schedule 25.02.2016
comment
БЛАГОДАРЮ ВАС. Работает отлично. Очень ценится. - person Sharon; 26.02.2016