繁体   English   中英

Exact Online上的令牌请求不返回访问令牌

[英]Token request on Exact Online not returning access token

我一直在尝试使用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);
        }

我环顾四周,但我找到的所有答案都没有解决问题。

  • 试图使用其他tokenresponse类型。
  • 尝试使用.buildBodyMessage而不是.buildQueryMessage

我总是得到其中一个ProblemExceptions:

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值(Exact检查它是服务器端)。 如果可能的话,您可能希望查看实际输出(我猜HTML)。 真正的例外应该在那里。

解决方案是使用旧版本的Oltu库。 使用0.31工作,但1.0.1不工作。 奇怪的行为,但也许这将有助于未来的人。

 .tokenLocation("https://start.exactonline.be/api/oauth2/token")
                .setGrantType(GrantType.AUTHORIZATION_CODE)
                .setClientId(CLIENT_ID)
                .setClientSecret(CLIENT_SECRET)
                .setRedirectURI(REDIRECT_URI)
                .setCode(code)
                .buildBodyMessage();

.buildQueryMessage()更改为.buildBodyMessage() ,它对我.buildBodyMessage()

这是最新的依赖:

    <dependency>
        <groupId>org.apache.oltu.oauth2</groupId>
        <artifactId>org.apache.oltu.oauth2.client</artifactId>
        <version>1.0.2</version>
    </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM