gpt4 book ai didi

java - 签名无效。预期的签名基础字符串,JAVA

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:56 25 4
gpt4 key购买 nike

我们正在使用这段代码通过 o​​Auth 向 aweber 发送请求

long unixTime = System.currentTimeMillis() / 1000L;
OAuthRequest request1 = new OAuthRequest(Verb.GET,"https://api.aweber.com/1.0/accounts/1111/lists/1111/subscribers", service);
request1.addBodyParameter("ws.op", "create");
request1.addBodyParameter("email", "account@gmail.com");
request1.addBodyParameter("name", "ankur");
request1.addBodyParameter("oauth_token_secret", "mysecret");
request1.addBodyParameter("oauth_token", "mytoken");
request1.addBodyParameter("oauth_consumer_key", "mykey");
request1.addBodyParameter("oauth_signature_method", "HMAC-SHA1");
request1.addBodyParameter("oauth_nonce", "secret");
request1.addBodyParameter("oauth_timestamp", String.valueOf(unixTime));

service.signRequest(accessToken, request1);
Response response1 = request1.send();
// Create a reader to read Twitter's stream
BufferedReader reader1 = new BufferedReader(new InputStreamReader(response1.getStream()));

String line;
while ((line = reader1.readLine()) != null) {
System.out.println(line);
}

但是我们得到了这个回应

{
"error": {
"status": 401,
"documentation_url": "https://labs.aweber.com/docs/troubleshooting#unauthorized",
"message": "Invalid signature. Expected signature base string: GET%26https%3A%2F%2Fapi.aweber.com%2F1.0%2Faccounts%2F1111%2Flists%2F1111%2Fsubscribers%26oauth_consumer_key%3Dmykey%26oauth_nonce%3Dnonce%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1461676770%26oauth_token%3Dmytoken%26oauth_version%3D1.0%20https%3A%2F%2Flabs.aweber.com%2Fdocs%2Ftroubleshooting%23unauthorized",
"type": "UnauthorizedError"
}
}

无效的签名。期望的签名基础字符串

我检查了我的签名,是一样的。不知道为什么它显示不同。

更新 - 1:

很多人说我的 key 和访问 token 无效,但在我的代码中,我在尝试点击另一个帐户 URL 之后点击了第一个帐户 URL。

像这样

  OAuth1AccessToken  accessToken= new OAuth1AccessToken("oauth_token","oauth_token_secret","oauth_token_secret=oauth_token_secret&oauth_token=oauth_token");
final OAuthRequest request = new OAuthRequest(Verb.GET, ACCOUNT_RESOURCE_URL, service);
service.signRequest(accessToken, request);

final Response response = request.send();
System.out.println("Got it! Lets see what we found...");
System.out.println();
System.out.println(response.getBody());

System.out.println();
System.out.println("Thats it man! Go and build something awesome with AWeber and ScribeJava! :) 11111111");

这是日志

  Got it! Lets see what we found...

{"total_size": 1, "start": 0, "entries": [{"http_etag": "\"8c4c161ee1fd3dfg596911c82e9f2feff145907dec2-ca5feee2b7fbb6febfca8af554fg1541ea960aaedb\"", "lists_collection_link": "https://api.aweber.com/1.0/accounts/xxxx/lists", "self_link": "https://api.aweber.com/1.0/accounts/xxxx", "resource_type_link": "https://api.aweber.com/1.0/#account", "id": xxxx, "integrations_collection_link": "https://api.aweber.com/1.0/accounts/xxxx/integrations"}], "resource_type_link" : "https://api.aweber.com/1.0/#accounts"}

在此之后,我运行了我的顶级代码,那么我的 key 有什么问题吗?为什么它适用于代码的第一部分?

最佳答案

根本原因分析:Invalid signature

当您的请求签名与我们预期的签名不匹配时,会引发此错误。此错误的常见原因是 token key (消费者、请求 token 或访问 token )不正确或丢失,或者应用程序中的 OAuth 1.0A 实现不正确。

这里 access token 有一个过期时间。 过期后,访问 token 将失效。

还有一个限制。 刷新 token 的数量有限制;每个客户端/用户组合一个限制,所有客户端的每个用户另一个限制。

因此,在您的情况下,您也可能已经超过了创建刷新 token 的限制。

解决方法可以按照我的另一个答案:Google Play Developer API - Query purchase token returns Invalid Value


要解决您的问题,您可以按照以下步骤操作:

  1. 登录您的网站,验证您的消费者密码是否正确实验室帐户并将消费者 key 复制并粘贴到您的申请。
  2. 发出新的请求 token 和/或访问 token ,然后重试。
  3. 验证您的应用是否正确实现了 OAuth 1.0A关于服务器基本字符串的标准。
  4. Refer to RFC5849 OAuth 1.0A Specification Section 3.4.1为了更多详情。

关于java - 签名无效。预期的签名基础字符串,JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36866559/

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