【问题标题】:Connecting R Studio to Exact Online API将 R Studio 连接到 Exact Online API
【发布时间】:2018-05-05 18:49:46
【问题描述】:

我正在尝试与 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(),Status: 400 错误声明为 HTTP/1.1 400 Bad Request。

【问题讨论】:

  • 据我所知,您需要将代码交换为刷新令牌。该过程在cloud.invantive.com 上的文档中进行了描述,但您应该在您自己的受信任设备上执行这些步骤,因为该站点仅适用于有兴趣的用户。请注意,但可能已经知道,随着所有用户即将推出所需的 2FA,令牌允许您在每次连接时无需 2FA 即可访问 Exact Online。
  • 我基本上会做该文档中列出的事情。我必须在浏览器上登录 Exact Online,然后我会被重定向到重定向 URI。 URL 中有这样的代码:example.com/?code=pTvE%21IAAAAAdXxoeXk46U........ 所以我在我的 POST 代码中使用该 URL 中的代码,但它一直给我相同的响应(错误状态 400)。跨度>
  • 参见auth0.com/docs/api-auth/tutorials/authorization-code-grant 或云端的第 2 步。 Invantive com 网站检查不同的重定向 Uri 复选框。代码授权流程还有一个额外的步骤。
  • 当您只需要临时使用的数据时,您还可以在 data-access-point.com 上使用带有用户名/密码、sql 查询和所需输出格式(如 Sjon)的 url。
  • 我阅读了 auth0.com/docs/api-auth/tutorials/authorization-code-grant 但仍然不知道为什么我的代码不起作用。

标签: r oauth oauth-2.0 exact-online


【解决方案1】:

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

这将为您获取数据帧中的访问令牌、令牌类型、到期时间和刷新令牌。

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多