2013-03-17 2 views
2

Я пытаюсь получить обновления компании Linkedin на своем веб-сайте. Последовал процесс https://developer.linkedin.com/documents/authentication и сгенерировал ключ api и секретный ключ, зарегистрировавшись.Linkedin api call using oauth in java

В соответствии с documentation Я могу сгенерировать Авторизованный код на этапе a. Для шага b для создания токена доступа Я использую OAuth in java.

request = OAuthClientRequest.tokenLocation("https://www.linkedin.com/uas/oauth2/accessToken") 
         .setGrantType(GrantType.AUTHORIZATION_CODE) 
         .setCode("****") 
         .setRedirectURI("https://www.example.in") 
         .setClientId("*******") 
         .setClientSecret("******").buildBodyMessage(); 
        OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient()); 
        GitHubTokenResponse oAuthResponse = oAuthClient.accessToken(request, GitHubTokenResponse.class); 
        String accessToken = oAuthResponse.getAccessToken(); 
        String expiresIn = oAuthResponse.getExpiresIn(); 

Но получить ошибки

OAuthProblemException{description='Missing parameters: access_token', error='invalid_request', uri='null', state='null', scope='null'} 
at org.apache.amber.oauth2.common.exception.OAuthProblemException.error(OAuthProblemException.java:57) 
at org.apache.amber.oauth2.common.utils.OAuthUtils.handleOAuthProblemException(OAuthUtils.java:166) 
at org.apache.amber.oauth2.common.utils.OAuthUtils.handleMissingParameters(OAuthUtils.java:184) 
at org.apache.amber.oauth2.client.validator.OAuthClientValidator.validateRequiredParameters(OAuthClientValidator.java:90) 
at org.apache.amber.oauth2.client.validator.OAuthClientValidator.validateParameters(OAuthClientValidator.java:53) 
at org.apache.amber.oauth2.client.validator.OAuthClientValidator.validate(OAuthClientValidator.java:49) 
at org.apache.amber.oauth2.client.response.OAuthClientResponse.validate(OAuthClientResponse.java:64) 
at org.apache.amber.oauth2.client.response.OAuthClientResponse.init(OAuthClientResponse.java:59) 
at org.apache.amber.oauth2.client.response.OAuthAccessTokenResponse.init(OAuthAccessTokenResponse.java:52) 
at org.apache.amber.oauth2.client.response.OAuthClientResponseFactory.createCustomResponse(OAuthClientResponseFactory.java:60) 
at org.apache.amber.oauth2.client.URLConnectionClient.execute(URLConnectionClient.java:105) 

Пожалуйста, помогите исправить. Заранее благодарю за любую помощь.

ответ

2

Я заметил проблему.

Похоже, что существует проблема с документацией. Извинения.

Правый вызов

request = OAuthClientRequest.tokenLocation("https://www.linkedin.com/uas/oauth2/accessToken") 
        .setGrantType(ResponseType.CODE.toString()) 
        .setCode("****") 
        .setRedirectURI("https://www.example.in") 
        .setClientId("*******") 
        .setClientSecret("******").buildBodyMessage(); 

Ум ResponseType.CODE.toString(), а не GrantType.AUTHORIZATION_CODE

+0

Спасибо Антонио, просто попробовал это и получил ошибку компиляции. Метод setGrantType (GrantType) в типе OAuthClientRequest.TokenRequestBuilder не является , применимым для аргументов (String). Нужно ли делать какие-либо твики. – Bhabani

+0

извинения oopps. Я смешал местоположение аутентификации с токеном. Проблема в том, что вы можете использовать OAuthJSONAccessTokenResponse.class, а не GitHubTokenResponse.class для Linkedin: OAuthJSONAccessTokenResponse oAuthResponse = oAuthClient.accessToken (запрос, OAuthJSONAccessTokenResponse.class); Мы работаем над улучшением нашего API и документации. Я понимаю, что это немного запутанно. –

+0

Спасибо Антонио, наконец, я могу позвонить. – Bhabani

1

Я предлагаю вам ознакомиться с некоторыми связанными с документами разработчиков и проверить java OAuth library, а не выполнять процесс подписания вручную. Тогда вы можете задать конкретный вопрос.

+0

Я второй это! – OhadR