代码之家  ›  专栏  ›  技术社区  ›  Stan

将R Studio连接到精确的在线API

  •  1
  • Stan  · 技术社区  · 6 年前

    我正在尝试与准确的在线API建立连接,并遵循准确的在线社区页面中列出的步骤: 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"))
    

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

    编辑:使用 verbose() 在POST调用中,状态:400 error表示为HTTP/1.1 400 Bad Request。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Stan    6 年前

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

    这将在数据帧中获得访问令牌、令牌类型、过期时间和刷新令牌。