2015-04-02 1 views
0

Я пытаюсь получить доступ к данным профиля LinkedIn, используя его API.Запрос JSAPI LinkedIn OAuth10a с Java (на основе PHP-версии)

Сначала я следил за LinkedIn JSPAI Doc по адресу 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, перечисленное код помощи, чтобы получить данные пользователя, как описано в $ U rl:

// 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());