Запрос JSAPI LinkedIn OAuth10a с Java (на основе версии PHP)

Я пытаюсь получить доступ к данным в профиле LinkedIn, используя его API.

Сначала я следовал за Документом JSPAI LinkedIn на https://developer-programs.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens в PHP. Поэтому я начал переводить код с PHP на Java с помощью Scribe.

Затем я нашел этот пример на Github, который выглядит как то, что я сделал: https://github.com/fernandezpablo85/TokenExchangeSample/blob/master/src/main/java/com/linkedin/oauth/ExchangeService.java

и я получил эту строку в конце после авторизации и обмена куки:

oauth_token = 75—4ff2c506-37e2-4b77-927f-c28c5f511762&oauth_token_secret = c73110b2-0dce-43bd-8537-8c8fb4fd5290&oauth_expires_in = 5183975&oauth_authorization_expires_in = 5183975

В PHP перечисленный код помогает получить пользовательские данные, как описано в $ url:

// go to town, fetch the user's profile
$url = 'http://api.linkedin.com/v1/people/~:(id,first-name,last-name,headline)';
$oauth->fetch($url, array(), OAUTH_HTTP_METHOD_GET, array('x-li-format' => 'json')); // JSON!
$profile = json_decode($oauth->getLastResponse());
print "$profile->firstName $profile->lastName is $profile->headline.";

Таким образом, код работает и возвращает данные. В версии Java мне интересно, как использовать возвращенные токены.

Я пытался использовать https://api.linkedin.com/v1/people/~:(id,first-name,last-name,headline)?oauth_token=75—7ff2c506-57e2-4b77-927f-c28c5f551762&oauth_token_secret = c73330b2-0dce-48bd-8537-8c8fb4fd5290&oauth_expires_in = 5183975&oauth_authorization_expires_in = 5183975

Но это не работает.

0

Решение

Я нашел решение: получив ключи Oauth10a, вы должны использовать их в новом запросе, указав формат json.

     OAuthService service = new ServiceBuilder()
.apiKey(APIKEY)
.apiSecret(SECRETKEY)
.provider(LinkedInApi.class)
.build();

OAuthRequest oAuthRequestData = new OAuthRequest(Verb.GET, DATAENDPOINT);
oAuthRequestData.addHeader("x-li-format", "json");
Token accessToken = new Token(oauth_token, oauth_token_secret);
service.signRequest(accessToken, oAuthRequestData);
Response oAuthResponse = oAuthRequestData.send();
System.outt.println(oAuthResponse.getBody());
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]