将R Studio连接到Exact Online API

时间:2018-04-14 09:59:47

标签: r oauth oauth-2.0 exact-online

我正在尝试与Exact Online API建立连接,并遵循Exact Online社区页面中列出的步骤:https://support.exactonline.com/community/s/knowledge-base#All-All-DNO-Task-oauth-eol-oauth-dev-oauth2tut

我设法完成了步骤1和步骤2.也就是说,我收到了示例中列出的授权码:“实际响应: https://www.mycompany.com/myapplication?code=XTzM!IAAAACbPTzQJXwFhM ...“

我必须在步骤3中使用此代码,但我似乎无法使其正常工作。我使用了所有列出的参数,但我得到的响应是:

Response [https://start.exactonline.nl/api/oauth2/token]
Date: 2018-04-14 10:58
Status: 400
Content-Type: text/html
Size: 11 B

我不知道我做错了什么。我用于第3步的代码是:

url <- "https://start.exactonline.nl/api/oauth2/token"
POST(url, add_headers("Content-type" = "application/x-www-form-urlencoded"),
    body = list(code="[CODE_FROM_STEP_2]",
        redirect_uri="[MY_WEBSITE_URI]", client_id="[MY_CLIENT_ID]", 
        client_secret="[MY_CLIENT_SECRET]", grant_type="authorization_code"))

如果有人能帮我解决这个问题,我将非常感激!感谢。

编辑:在POST调用中使用verbose(),状态:400错误表示为HTTP / 1.1 400错误请求。

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,我通过使用Postman来获取第一个访问权限并刷新令牌来解决此问题。然后,我使用刷新令牌获取新访问权限并使用以下代码刷新令牌:

a <- POST(url,
      body = list(refresh_token = {refresh_token},
                  grant_type = "refresh_token", client_id = {client_id}, 
                  client_secret = {client_secret}),
      encode = "form")
a.df <- as.data.frame(fromJSON(content(a,type="text")))

这将为您提供数据帧中的访问令牌,令牌类型,到期时间和刷新令牌。