Java 的 JSAPI LinkedIn OAuth10a 请求(基于 PHP 版本)
JSAPI LinkedIn OAuth10a request with Java (based on a PHP version)
我正在尝试使用 API.
访问 LinkedIn 个人资料上的数据
起初我在 PHP 中关注 https://developer-programs.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens 上的 LinkedIn JSPAI Doc。所以我开始使用 Scribe 将代码从 PHP 翻译成 Java。
然后,我在 Github 上找到了这个例子,它看起来像我所做的:https://github.com/fernandezpablo85/TokenExchangeSample/blob/master/src/main/java/com/linkedin/oauth/ExchangeService.java
在授权和 cookie 交换之后,我最终得到了这个字符串:
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.";
所以代码有效并且 returns 数据。在 Java 版本中,我想知道如何使用返回的令牌。
但是不行。
我找到了解决方案:获得 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());
我正在尝试使用 API.
访问 LinkedIn 个人资料上的数据起初我在 PHP 中关注 https://developer-programs.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens 上的 LinkedIn JSPAI Doc。所以我开始使用 Scribe 将代码从 PHP 翻译成 Java。
然后,我在 Github 上找到了这个例子,它看起来像我所做的:https://github.com/fernandezpablo85/TokenExchangeSample/blob/master/src/main/java/com/linkedin/oauth/ExchangeService.java
在授权和 cookie 交换之后,我最终得到了这个字符串:
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.";
所以代码有效并且 returns 数据。在 Java 版本中,我想知道如何使用返回的令牌。
但是不行。
我找到了解决方案:获得 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());