我正在尝试使用R验证Brightcove Analytics API(OAuth 2.0(。我的第一次尝试是在 httr 包中使用 oauth 函数,我尝试按照以下步骤操作
1( 使用公钥和私钥为我的应用程序创建一个变量。做:
library("httr")
myapp <- oauth_app("MyBrightcoveApp", key="mykeyhere", secret = "mysecrethere")
2( 查找 Brightcove 的 OAuth 设置。oauth_endpoint(( 函数需要一个访问 URL,我找到了"https://oauth.brightcove.com/v3/access_token",还有一个授权 URL,我还没有找到。我不确定Brightcove是否允许浏览器内帐户身份验证。
我的下一个尝试是使用 httr::P OST(( 函数。我查看了Brightcove的示例节点.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' )
知道我可能错过了什么吗?
这是一个非常奇怪的身份验证系统,与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
(该 id 和 secret 适用于我的免费 30 天帐户,其中没有任何内容,应该允许您验证代码是否有效。