编程语言
首页 > 编程语言> > java-Exact Online上的令牌请求未返回访问令牌

java-Exact Online上的令牌请求未返回访问令牌

作者:互联网

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