【发布时间】:2011-02-27 10:49:28
【问题描述】:
所以我正在构建一个 java 脚本,它与我的 C++ 应用程序一起用于向用户发送直接消息。该脚本负责构建我发送的请求。当我发送请求时,我收到“签名不正确”或“无法验证您的身份”是否有人看到我遗漏或做错了什么?我正在继续调查。提前谢谢你
Javascript:
var nDate = new Date();
var epoch = nDate.getTime();
var nounce = "";
nounce = Base64.encode(epoch+randomString());
var Parameters = [
"oauth_consumerkey="+sConsumerKey,
"oauth_nonce="+nounce,
"oauth_signature_method=HMAC-SHA1",
"oauth_timestamp="+epoch,
"oauth_token="+sAccessToken,
"oauth_version=1.0",
"text="+sText,
"user="+sUser];
var SortedParameters = Parameters.sort();
var joinParameters = SortedParameters.join("&");
var encodeParameters = escape(joinParameters);
signature_base_string = escape("POST&"+NormalizedURL+"&"+encodeParameters);
signature_key = sConsumerSecret+"&"+sAccessSecret;
signature = Base64.encode(hmacsha1(signature_base_string,signature_key));
sAuthHeader = "
OAuth realm=,
oauth_nonce="+nounce+",
oauth_timestamp="+epoch+",
oauth_consumer_key="+sConsumerKey+",
oauth_signature_method=HMAC-SHA1,
oauth_version=1.0,
oauth_signature="+signature+",
oauth_token="+sAccessToken+",
text="+sText;
goNVOut.Set("Header.Authorization: ", sAuthHeader);
【问题讨论】:
-
要检查的一件事是确保您的服务器时间与 Twitter 的时间同步。如果超过 5 分钟,您的请求将失败。
-
如何获取 Twitter 的时间?
-
我一直在慢慢地得到它,它不是完全有效的,但是当你调用 Java 脚本获取时间时,我以毫秒为单位拉动纪元时间。谢谢亚伯拉罕!
标签: javascript twitter oauth