Hi Taylor,
I have built the Header Authorization as given below:
var sTimestamp = timecode();
var sNonce = SiebelNonce(sTimestamp);
var sSignMethod = "HMAC-SHA1";
var sAuthVersion = "1.0";
var sBaseParamString = “oauth_consumer_key=” + sConsumerKey + “&oauth_nonce=” + sNonce + “&oauth_signature_method=” + sSignMethod + “&oauth_timestamp=” + sTimestamp + “&oauth_token=” + oauth_token + “&oauth_version=” + sAuthVersion + “&status=TestSiebel”;
var sEncodedParamString = PercentEncodeString(sBaseParamString);
var sEncodedTargetString = PercentEncodeString(“https://api.twitter.com/1/statuses/update.xml”);
var oauth_signature = b64_hmac_sha1(PercentEncodeString(sConsumerSecret + “&” + oauth_token_secret), PercentEncodeString(“POST&” + sEncodedTargetString + “&” + sEncodedParamString));
var sAuthorizationHeader = “OAuth oauth_consumer_key=”"+sConsumerKey+"",oauth_signature_method=""+sSignMethod+"",oauth_timestamp=""+sTimestamp+"",oauth_nonce=""+sNonce+"",oauth_version=""+sAuthVersion+"",oauth_token=""+oauth_token+"",oauth_signature=""+sEncSignature+""";
where the sConsumerKey, sConsumerSecret, oauth_token_secret, oauth_token and oauth_signature are Percent Encoded.
The Encoded base string for signature is given below:
POST&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.xml&oauth_consumer_key%3DBEYuQ4YmXpy5nwwVIxYwOg%26oauth_nonce%3Dh3CpX9raxdbFpmRV0FpLAraGHNQWb59OGrxPDNWeskQqdzGyBIw1aI6eb3xIx11Ie35I07RTCCIvJooQQucHQQxDZZgkNsvOMD0x%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1341426345%26oauth_token%3D361729128-RAeksAvpDa6ipd7WCRxSS5rKFnYzHHoeW2Ni2zqP%26oauth_version%3D1.0%26status%3DTestSiebel
I am using the below function for PercentEncodeString.
function PercentEncodeString(InputString)
{
var sEncString = InputString;
sEncString = sEncString.replace(/\#/g, "%23");
sEncString = sEncString.replace(/\$/g, "%24");
sEncString = sEncString.replace(/\%/g, "%25");
sEncString = sEncString.replace(/\&/g, "%26");
sEncString = sEncString.replace(/\@/g, "%40");
sEncString = sEncString.replace(/\//g, "%2F");
sEncString = sEncString.replace(/\^/g, "%5E");
sEncString = sEncString.replace(/\~/g, "%7E");
sEncString = sEncString.replace(/\{/g, "%7B");
sEncString = sEncString.replace(/\}/g, "%7D");
sEncString = sEncString.replace(/\[/g, "%5B");
sEncString = sEncString.replace(/\]/g, "%5D");
sEncString = sEncString.replace(/\=/g, "%3D");
sEncString = sEncString.replace(/\:/g, "%3A");
sEncString = sEncString.replace(/\,/g, "%2C");
sEncString = sEncString.replace(/\;/g, "%3B");
sEncString = sEncString.replace(/\?/g, "%3F");
sEncString = sEncString.replace(/\+/g, "%2B");
sEncString = sEncString.replace(/\\/g, "%5C");
sEncString = sEncString.replace(/\"/g, "%22");
sEncString = sEncString.replace(/\!/g, "%21");
sEncString = sEncString.replace(/\*/g, "%2A");
sEncString = sEncString.replace(/\'/g, "%27");
sEncString = sEncString.replace(/\(/g, "%28");
sEncString = sEncString.replace(/\)/g, "%29");
sEncString = sEncString.replace(/\ /g, "%20");
return sEncString;
}
Final HTTP Call is as shown below:
HTTPRequestMethod = "POST"
HTTPRequestURLTemplate = "https://api.twitter.com/1/statuses/update.xml"
HDR.Authorization = sAuthorizationHeader
HTTPContentType = "application/x-www-form-urlencoded"
HTTPRequestBodyTemplate = “status=TestSiebel”
Below is the HTTP Request captured from the log files.
*** HTTP Transport Parameters:
Request URL = https://api.twitter.com/1/statuses/update.xml
Request Method = POST
Sending Request
*** HTTP request Headers for Data Send Request:
User-Agent: Mozilla/4.0
Accept: text/*
Content-Type: application/x-www-form-urlencoded
Authorization: OAuth oauth_consumer_key=“BEYuQ4YmXpy5nwwVIxYwOg”,oauth_signature_method=“HMAC-SHA1”,oauth_timestamp=“1341410152”,oauth_nonce=“gmqK5x4HqTtciNOwqzmrvfPVZXCfcbuPLrIUQV9MWbAJegRNsmPuDuRgLmi9Fx2k1AB7uAJFSb2BpmiLMAisyXo2T963DJXqJD9p”,oauth_version=“1.0”,oauth_token=“361729128-RAeksAvpDa6ipd7WCRxSS5rKFnYzHHoeW2Ni2zqP”,oauth_signature=“RPcV2M3Eu72M3yzyeaa7NCynBj4”
*** HTTP response Headers from Data Send request:
HTTP/1.1 401 Unauthorized
Date: Wed, 04 Jul 2012 13:58:53 GMT
Status: 401 Unauthorized
WWW-Authenticate: OAuth realm="https://api.twitter.com"
X-Runtime: 0.01033
Cache-Control: no-cache, max-age=1800
Content-Type: application/xml; charset=utf-8
Content-Length: 150
Set-Cookie: k=10.36.31.109.1341410333943644; path=/; expires=Wed, 11-Jul-12 13:58:53 GMT; domain=.twitter.com
Set-Cookie: guest_id=v1%3A134141033394892564; domain=.twitter.com; path=/; expires=Sat, 05-Jul-2014 01:58:53 GMT
Set-Cookie: _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCAVVSVI4ASIKZmxhc2hJQzonQWN0aW9uQ29u%250AdHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoHaWQiJTQx%250AOTg3ZWViNGVlMTY4ZGQ5OWExZDljMWE5YjRkYjcy–dbac981bce37c6a234f46610c4ea3e650371132b; domain=.twitter.com; path=/; HttpOnly
Expires: Wed, 04 Jul 2012 14:28:53 GMT
Vary: Accept-Encoding
Server: tfe
Please help me understand the mistake that I am doing.
Thanks,
Ruchin