我一直在尝试使用OAuth 2.0连接到Exact Online.我们倾向于专注于Java应用程序,可惜Exact没有Java的文档/示例/支持.
我能够执行身份验证请求,但是对于令牌请求,我遇到了一些麻烦.我的代码:
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);
}
我环顾四周,但找到的所有答案都不能解决问题.
>尝试使用其他令牌响应类型.
>尝试使用.buildBodyMessage而不是.buildQueryMessage
我总是得到以下问题之一:
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).真正的例外应该在那里.
标签:oauth-2-0,oauth,oltu,java,exact-online
来源: https://codeday.me/bug/20191119/2035938.html