如何在 OAuth 2 之后使用 Basecamp3 API 获取令牌?

How to get a token with Basecamp3 API after OAuth 2?

我正在使用 Basecamp3 API with authentication OAuth2. I started by register my app at https://launchpad.37signals.com/integrations 构建一个 Javascript 应用程序以提供我的 redirect_uri 并让我的 client_id & client_secret 配置我的 OAuth 2图书馆。

当我启动我的应用程序时似乎一切正常。我能够获得 Basecamp 登录名,并可以访问我的 Basecamp 3 数据。

但是,配置完成后,window 关闭,我无法访问我的应用程序。

我查看了日志,看到错误400:

error: 2019-03-27 02:59:55.5955 Error when requesting api key StatusCodeError: 400 - {"timestamp":1553716795279,"status":400,"error":"Bad Request","message":"Bad request","path":"/thirdparty/proxy/oauth2/requestTokens/"}

看来我无法获得令牌,所以我将实际的 link https://launchpad.37signals.com/authorization/token 更改为 https://launchpad.37signals.com/authorization/token?type=web_server 就像我为第一个 link 所做的那样(解释 here)

但是还是报错,但是报错500:

error: 2019-03-27 02:56:16.5616 Error when requesting api key StatusCodeError: 500 - {"apierror":{"status":"INTERNAL_SERVER_ERROR","timestamp":"27-03-2019 07:56:16","message":"Unexpected error","debugMessage":"could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement","errors":null}}

我什至尝试将协议 https 更改为 http。我仍然收到错误 500:

error: 2019-03-27 03:05:15.515 Error when requesting api key StatusCodeError: 500 - {"timestamp":1553717115170,"status":500,"error":"Internal Server Error","message":"Error requesting from http://launchpad.37signals.com/authorization/token?client_id=1111111111111111111111111&client_secret=22222222222222222222222&code=abcdef&redirect_uri=http%3A%2F%2Flocalhost%2Foauth%2Fredirect&grant_type=authorization_code; got HTTP response HTTP/1.1 307 Temporary Redirect","path":"/thirdparty/proxy/oauth2/requestTokens/"}

我尝试了很多方法来更改我的请求,但没有用。

我尝试通过 Postman 获取令牌(与我尝试使用我的应用程序的方式相同),但我不能。

你知道这个错误是从哪里来的吗?

我找到了解决办法。问题来自于我如何在命令行中使用 curl 来创建 POST 请求。我将元素放在 url 中,而不是使用 --data 选项。