我試圖讓2腿Oauth 2工作。我試圖模仿這種捲曲調用來獲取訪問令牌:使用2腿Oauth 2.0和Apache OauthClient訪問令牌
curl -u CLIENT_ID:CLIENT_SECRET https://mydomain.com/token -d "grant_type=client_credentials"
我試圖做使用Apache Oltu在Java中同樣的事情:
<dependency>
<groupId>org.apache.oltu.oauth2</groupId>
<artifactId>org.apache.oltu.oauth2.client</artifactId>
<version>1.0.0</version>
</dependency>
這是Java代碼中,我「M使用:
OAuthClientRequest request = OAuthClientRequest
.tokenLocation("https://mydomain.com/token")
.setGrantType(GrantType.CLIENT_CREDENTIALS)
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
.buildBodyMessage();
//create OAuth client that uses custom http client under the hood
OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());
OAuthJSONAccessTokenResponse oAuthResponse = oAuthClient.accessToken(request, OAuthJSONAccessTokenResponse.class);
curl命令工作正常,但在Java代碼中給出了這樣的錯誤:
OAuthProblemException{error='invalid_request', description='Must include a basic access authentication header.', uri='null', state='null', scope='null', redirectUri='null', responseStatus=0, parameters={}}
我嘗試使用標頭消息構建:
代替,但它給:
OAuthProblemException{error='invalid_request', description='Must specify grant_type field.', uri='null', state='null', scope='null', redirectUri='null', responseStatus=0, parameters={}}
任何建議都理解的。我希望這很簡單。
小晚,但對於那些有興趣,你可以嘗試通過buildQueryMessage改變buildBodyMessage()() – vicmac