簡體   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