Hi there,

First just a note that you should use the proper API path of
https://api.twitter.com/1/direct_messages/new.xml for this request -- API
URLs without version numbers or the api subdomain aren't supporting and can
have unexpected results.

I think that your problem might be that your POST body needs to be validly
escaped prior to becoming part of your signature base string.

The phrase "Æ Ø Å and æ ø å..." should become
"%C3%86%20%C3%98%20%C3%85%20and%20%C3%A6%20%C3%B8%20%C3%A5..." for the POST
body to be valid.

Now that you've escaped the values for your POST body, you feed them into
your signature base string creation process, which requires that the %'s be
escaped... so this becomes:

"%25C3%2586%2520%25C3%2598%2520%25C3%2585%2520and%2520%25C3%25A6%2520%25C3%25B8%2520%25C3%25A5..."

Let me know if this helps.

Thanks!
Taylor


On Mon, Jan 24, 2011 at 10:51 PM, THusvaeg <hus...@gmail.com> wrote:

> Hi,
>
> I have a working api integration with the following setup:
>
> -----------------------------------------------------------------------
>
> var strText = Inputs.GetProperty("DMTxt");
> var strUser = Inputs.GetProperty("DMUser");
>
> var strTextEnc = encodeString(strText);
>
> var sBaseTargetString = "http://twitter.com/direct_messages/new.xml";;
> var sEncodedTargetString = encodeString(sBaseTargetString);
>
> var sSignatureKey = sConsumerSecret+"&"+oauth_token_secret;
>
> // Build Parameter String
> var sBaseParamString = "oauth_consumer_key="+sConsumerKey
> +"&oauth_nonce="+sNonce;
> sBaseParamString = sBaseParamString + "&oauth_signature_method=" +
> sSignMethod;
> sBaseParamString = sBaseParamString + "&oauth_timestamp="+sTimestamp;
> sBaseParamString = sBaseParamString + "&oauth_token=" + oauth_token;
> sBaseParamString = sBaseParamString +"&oauth_version="+sAuthVersion;
> sBaseParamString = sBaseParamString +"&screen_name="+strUser;
> sBaseParamString = sBaseParamString +"&text="+strTextEnc;
>
> var sEncodedParamString = encodeString(sBaseParamString);
>
> // Get signature
> var sBaseString = "POST&"+sEncodedTargetString
> +"&"+sEncodedParamString;
>
> var sSignature = b64_hmac_sha1(sSignatureKey, sBaseString)+"=";
> var sEncSignature = encodeString(sSignature);
>
> -----------------------------------------------------------------------
>
> And this works great for all but Æ Ø Å and æ ø å...
>
> I have tried simply adding them to the encodeString() function as
> such:
>
>                sEncString = sEncString.replace(/\æ/g, "%E6");
>                sEncString = sEncString.replace(/\Æ/g, "%C6");
>                sEncString = sEncString.replace(/\ø/g, "%F8");
>                sEncString = sEncString.replace(/\Ø/g, "%D8");
>                sEncString = sEncString.replace(/\å/g, "%E5");
>                sEncString = sEncString.replace(/\Å/g, "%C5");
>
> But this returns a Status: 400 Bad Request
>
> with the target url:
> http://twitter.com/direct_messages/new.xml?screen_name=thusv&text=%E6%20%F8%20%E5
>
> Any tips?
>
> --
> Twitter developer documentation and resources: http://dev.twitter.com/doc
> API updates via Twitter: http://twitter.com/twitterapi
> Issues/Enhancements Tracker:
> http://code.google.com/p/twitter-api/issues/list
> Change your membership to this group:
> http://groups.google.com/group/twitter-development-talk
>

-- 
Twitter developer documentation and resources: http://dev.twitter.com/doc
API updates via Twitter: http://twitter.com/twitterapi
Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list
Change your membership to this group: 
http://groups.google.com/group/twitter-development-talk

Reply via email to