【问题标题】:REST API cURL Token - PaylocityREST API cURL 令牌 - Paylocity
【发布时间】:2019-10-04 00:31:59
【问题描述】:

这应该很简单,但是对于我的生活,我无法形成我的 cURL 请求,以便 Paylocity 接受它。 https://www.paylocity.com/integrations/apis/

我不断收到带有 json 响应 {"error":"invalid_client"} 的 HTTP/1.1 400 Bad Request,我认为这表明我发送的数据格式不正确。如果我弄乱了数据,我可以获得不同的响应代码。在这种情况下,我只是想获得一个不记名令牌。

curl  -v https://apisandbox.paylocity.com/IdentityServer/connect/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Authorization:Basic <base64 encoded  clientid:clientsecret>' \
-d  'grant_type = client_credentials&scope = WebLinkAPI'

上面有什么明显的错误吗?

【问题讨论】:

  • payload 中的这些空格是故意的还是只是为了便于阅读?通常内容中不应有空格,因为这需要进行正确的格式编码。您也可以直接将Authorization 标头替换为直接--user clientid:clientsecret,curl 将为您添加base64 编码的基本授权标头。虽然 curl 在通过-d 提供有效负载时应该自动使用POST,但我更喜欢通过-X POST 明确设置它以确保。
  • @RomanVottner 空格不应该在那里,在测试时我们没有空格。谢谢你指出这一点。我们终于弄明白了,我的程序员碰巧一直在用 Windows 上的 postman 解决另一个问题(我们通常在 Linux 中工作,去看看)。显然 windows 编译邮递员将显示与 Linux 不同的输出。我们能够使用这些信息来正确格式化正文。 (见我的回答)

标签: rest curl


【解决方案1】:

感谢为 Windows 编译的邮递员,终于找到了答案(仅供参考,对我们来说,Windows 上的邮递员提供的输出与 Linux 上的邮递员不同)。当邮递员发送请求时,它不使用 Paylocity 文档中描述的 base64 身份验证标头。相反,它将 client_id 和 client_secret 放在正文中。此外,邮递员会对 id 和 secret 字符串进行 url 编码。

即“==”变成“%3D%3D”,“+”变成“%2B”,“/”变成“%2F”

另外,使用 api 沙箱也不起作用。我们还必须针对生产服务器进行身份验证。

curl -X POST -i \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&scope=WebLinkAPI&client_id=<client ID>&client_secret=<client secret>' \
https://api.paylocity.com/IdentityServer/connect/token

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2013-02-25
    • 2016-01-19
    • 2021-05-04
    • 2017-06-03
    • 2021-09-22
    相关资源
    最近更新 更多