我一直在尝试使用OAuth 2.0连接到Exact Online。我们倾向于专注于Java应用程序,可惜Exact没有Java的文档/示例/支持。
我能够执行身份验证请求,但是对于 token 请求,我遇到了一些麻烦。我的代码:
OAuthAuthzResponse oar = OAuthAuthzResponse.oauthCodeAuthzResponse(request);
code = oar.getCode();
OAuthClientRequest oAuthRequest;
try {
oAuthRequest = OAuthClientRequest
.tokenLocation("https://start.exactonline.be/api/oauth2/token")
.setGrantType(GrantType.AUTHORIZATION_CODE)
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
.setRedirectURI(REDIRECT_URI)
.setCode(code)
.buildQueryMessage();
OAuthClient client = new OAuthClient(new URLConnectionClient());
OAuthJSONAccessTokenResponse oauthResponse = client.accessToken(oAuthRequest, OAuth.HttpMethod.POST);
}
我环顾四周,但所有找到的答案都不能解决问题。
我总是得到以下问题之一:
Token request failed: unsupported_response_type, Invalid response! Response body is not application/json encoded
Token request failed: invalid_request, Missing parameters: access_token
我希望任何人都具有处理精确在线问题的经验,希望能对您有所帮助。
最佳答案
不确定Java库的工作方式,我仅在C#上使用了Exact Online。
问题似乎是该库尝试从JSON响应中提取access_token
,但响应中没有JSON。您可能尚未授权应用程序(用户操作),或者使用了错误的返回URL值(精确检查服务器端)。如果可能,您可能希望查看实际输出(我猜是HTML)。真正的例外应该在那里。