gpt4 book ai didi

java - 领英集成——建立requestToken

转载 作者:行者123 更新时间:2023-11-30 06:38:45 24 4
gpt4 key购买 nike

我正在开发(目前正在尝试)将与 LinkedIn 集成的 portlet。

遵循有关它的文档: http://developer.linkedin.com/docs/DOC-1008 -->授权 LinkedIn 成员的第一步是请求 requestToken。此请求是通过 HTTP POST 完成的。对于 requestToken 步骤,以下组件应出现在要签名的字符串中:

* HTTP Method (POST)
* Request URI (https://api.linkedin.com/uas/oauth/requestToken)
* oauth_callback
* oauth_consumer_key
* oauth_nonce
* oauth_signature_method
* oauth_timestamp
* oauth_version

我已经有了 API(它是 oauth_consumer_key) key ,我需要生成特定的 URL 字符串。有此 URL 和 HTTP 连接的下一个 java 代码:

private void processAuthentication() {

Calendar cal = Calendar.getInstance();
Long ms = cal.getTimeInMillis();
Long timestamp = ms / 1000;

Random r = new Random();
Long nonce = r.nextLong();

String prefixUrl = "https://api.linkedin.com/uas/oauth/requestToken";
String oauthCallback = "oauth_callback=http://localhost/";
String oauthConsumerKey =
"&oauth_consumer_key=my_consumer_key";
String oauthNonce = "&oauth_nonce=" + nonce.toString();
String oauthSignatureMethod = "&oauth_signature_method=HMAC-SHA1";
String oauthTimestamp = "&oauth_timestamp=" + timestamp.toString();
String oauthVersion = "&oauth_version=1.0";

String mainUrl =
oauthCallback + oauthConsumerKey + oauthNonce + oauthSignatureMethod
+ oauthTimestamp + oauthVersion;

try {
prefixUrl =
URLEncoder.encode(prefixUrl, "UTF-8") + "&"
+ URLEncoder.encode(mainUrl, "UTF-8");

URL url = new URL(prefixUrl);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
String msg = connection.getResponseMessage();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

接下来的问题是,对于那些遇到过这个问题的人:真正应该如何查看连接的 URL 字符串以及如何接收响应?

对于 URL,它对您生成的 URL 示例感兴趣。对于感兴趣的响应,获取它的方法。据我了解,建立 HTTP 连接后,响应为:

connection.getResponseMessage();

最佳答案

@sergionni 我从 linkedin-developer 找到了你问题的答案

如你所知授权 Linked-In 成员的第一步是请求 requestToken。此请求是通过 HTTP POST 完成的。

如果您使用回调,您的基本字符串最终应该看起来像这样:

POST&https%3A%2F%2Fapi.linkedin.com%2Fuas%2Foauth%2FrequestToken &oauth_callback%3Dhttp%253A%252F%252Flocalhost%252Foauth_callback%26o auth_consumer_key%3DABCDEFGHIJKLMNOPQRSTUVWXYZ%26 oauth_nonce%3DoqwgSYFUD87MHmJJDv7bQqOF2EPnVus7Wkqj5duNByU%26 oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1259178158%26 oauth_version%3D1.0

然后您使用您的 consumer_secret 对该基本字符串进行签名,计算签名。在这种情况下,如果您的 secret 是 1234567890,则签名将为 TLQXuUzM7omwDbtXimn6bLDvfF8=。

现在您将生成的签名与 oauth_nonce、oauth_callback、oauth_signature_method、oauth_timestamp、oauth_consumer_key 和 oauth_version 一起创建一个 HTTP 授权 header 。对于此请求,该 HTTP header 如下所示:

Authorization: OAuth oauth_nonce="oqwgSYFUD87MHmJJDv7bQqOF2EPnVus7Wkqj5duNByU", oauth_callback="http%3A%2F%2Flocalhost%2Foauth_callback", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1259178158", oauth_consumer_key="ABCDEFGHIJKLMNOPQRSTUVWXYZ", oauth_signature="TLQXuUzM7omwDbtXimn6bLDvfF8=", oauth_version="1.0"

请注意,HTTP header 是单个 header ,而不是每个组件的 HTTP header 。您可以选择提供 realm="http://api.linkedin.com"。

作为对您请求 requestToken 的响应,您的 requestToken 将位于“oauth_token”响应字段中,这是我们使用“oauth_callback_confirmed”字段确认您的回调的验证、一个 oauth_token_secret 和一个 oauth_expires_in,以及其他一些值(value)观。

(这里是您的答案)响应如下:

oauth_token=94ab03c4-ae2c-45e4-8732-0e6c4899db63 &oauth_token_secret=be6ccb24-bf0a-4ea8-a4b1-0a70508e452b &oauth_callback_confirmed=true&oauth_expires_in=599

关于java - 领英集成——建立requestToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com