【问题标题】:Using Acumatica REST API with Microsoft Flow将 Acumatica REST API 与 Microsoft Flow 一起使用
【发布时间】:2018-05-16 04:39:21
【问题描述】:

有没有人尝试过将 Acumatica REST API 与 Microsoft Flow 一起使用?

我在几周前使用 Sergey 的说明 (click here) 进行了尝试,效果很好。

但现在我在第二步收到以下消息。

{ "message": "你没有登录。" }

第一步是我进行身份验证的地方(就像在 Sergey 的说明中一样),然后我将标题从第一步传递到第二步(就像在 Sergey 的说明中一样),但不知何故,第二步并不认为我已登录。

有什么想法吗?

这里是一些截图(我对截图唯一更改的是密码):

以下是第一次调用 (HTTP) 的标头输出: X-Handled-By Acumatica-PX.Export/AuthenticationManagerModule 设置Cookie ASP.NET_SessionId=0koh1ysshqsfmzr0srib2s5z;路径=/; HttpOnly,UserBranch=16; path=/,Locale=Culture=en-US&TimeZone=GMTM0800A;到期=格林威治标准时间 2017 年 11 月 18 日星期六 17:51:27; path=/,.ASPXAUTH=880C71F4E1A76C36E7E468337C01BC9E6E4C898E1977BAAAF2A35F7217B1D9132794A9547071508A35A2D4B9132DC4B55E86DD6E9C9B8D46CAECE39D74CC9B44BDD47E7C0D836D22D8F4EEFAF8142A9987418B8003EFF5B340DF735E7F8F36EDE5D25300D887E4DADEB0A80B707D87F6B0D32437;路径=/; HttpOnly 服务器 微软-IIS/7.5 X-Powered-By ASP.NET 日期 格林威治标准时间 2017 年 11 月 15 日星期三 17:51:27 内容长度 0

以下是来自第二次调用 (HTTP 2) 的标头输入: { "X-Handled-By": "Acumatica-PX.Export/AuthenticationManagerModule", "Set-Cookie": "ASP.NET_SessionId=0koh1ysshqsfmzr0srib2s5z; path=/; HttpOnly,UserBranch=16; path=/,Locale=Culture=en-US&TimeZone=GMTM0800A; expires=Sat, 18-Nov-2017 17:51: 27 GMT; path=/,.ASPXAUTH=880C71F4E1A76C36E7E468337C01BC9E6E4C898E1977BAAAF2A35F7217B1D9132794A9547071508A35A2D4B9132DC4B55E86DD6E9C9B8D46CAECE39D74CC9B44BDD47E7C0D836D22D8F4EEFAF8142A9987418B8003EFF5B340DF735E7F8F36EDE5D25300D887E4DADEB0A80B707D87F6B0D32437; path=/; HttpOnly", "服务器": "Microsoft-IIS/7.5", “X-Powered-By”:“ASP.NET”, "日期": "2017 年 11 月 15 日星期三 17:51:27 GMT", “内容长度”:“0” }

以下是第二次调用 (HTTP 2) 的标头输出: X-Handled-By Acumatica-PX.Export/AuthenticationManagerModule 日期 格林威治标准时间 2017 年 11 月 15 日星期三 17:51:27 设置Cookie ASP.NET_SessionId=dklemj2usv2zveyc3acxnhm5;路径=/; HttpOnly 服务器 微软-IIS/7.5 X-Powered-By ASP.NET 内容长度 36 内容类型 应用程序/json;字符集=utf-8

【问题讨论】:

  • 我应该指出,上面的方法同样适用于 Postman。它只是在 Microsoft Flow 中不起作用。
  • 我同意您的评估,即在此线程中的调用之间未传递 cookie:powerusers.microsoft.com/t5/Building-Flows/…
  • 比较 Auth 请求标头输出和 Put Customer 请求标头输出,似乎两次调用之间的 Session ID 发生了变化。
  • 感谢您的回复。我刚刚用每个步骤的标题更新了帖子。
  • 通过最后的 HTTP 2 标头输出非常清楚,会话 ID 在不应该的情况下是不同的。不幸的是,我不知道如何解决这个问题,因为 Headers Input 的格式看起来相当不错。

标签: acumatica


【解决方案1】:

我之前有一个,我看到你和我的不同之处在于你的登录帖子没有任何标题。

我的有:

接受申请/json

内容类型应用程序/json

这是我的工作流程截图:https://imgur.com/a/trgBa

编辑:

在玩了这个之后,我找到了一种方法来完成这项工作。尽管它使用的是 OAuth 身份验证而不是基于 cookie 的身份验证。 方法如下:

  1. 我首先在acumatica的同名屏幕上创建了一个连接的应用程序
    • 属于以下类型:资源所有者密码凭据
    • 我还创建了一个共享密钥,同时记下它的值(它只显示一次)。

  1. 我使用以下信息在流程中创建了第一个 http 调用
    • URL : https://"Acumatica ERP 实例 URL"/identity/connect/token
    • 标题:内容类型/application/x-www-form-urlencoded
    • 正文:grant_type=password&client_id=Value1&client_secret=Value2&username=Value3&password=Value4&scope=api

Value1 : 在步骤 1 中创建的已连接应用程序的 ID

Value2 :从步骤 1 中保存的共享密钥的值。如果丢失,只需删除并添加另一个密钥。请注意没有其他人使用该秘密

Value3 : 现有帐户的用户名

Value4 : 值 3 中指定的帐户密码


  1. 创建将执行 Web 服务请求的第二个 HTTP 调用
    • URL : https://"Acumatica ERP 实例 URL"/entity/Default/17.200.001/Case
    • 标题:授权/不记名子字符串(子字符串(字符串(正文('HTTP_2')),indexOf(字符串(正文('HTTP_2')),':'),34),2,32)
    • 正文:请求操作的普通 REST API 正文

子字符串在标题中只用空格隔开


这是代表 2 个 HTTP 调用的图像

【讨论】:

  • 感谢截图。我试过了,但它不起作用。您最近是否运行过此流程?我的工作几周前。直到最近它才停止工作。
  • 你是对的蒂姆,我刚刚尝试再次运行它,但出于同样的原因它失败了
  • 感谢您的确认。很高兴知道这不仅仅是我。
  • 太棒了。感谢您弄清楚如何使用 OAuth 而不是基于 Cookie 的身份验证。此外,这里还有一篇关于该主题的帖子:timrodman.com/connecting-clouds-web-services-summit-2018
猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
相关资源
最近更新 更多