将 R Studio 连接到 Exact Online API

Connecting R Studio to Exact Online API

我正在尝试与 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 错误请求。

对于任何感兴趣的人,我通过使用 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")))

这将为您提供数据框中的访问令牌、令牌类型、过期时间和刷新令牌。