Once check the Base string.... just now i have done with it in j2me..
On Aug 18, 11:23 pm, Olu <oowos...@gmail.com> wrote: > Hi Taylor, > > I made the following changes to my code > - I made the status only one word. > - Changed my curl statements to the following: > > $ch = curl_init("http://api.twitter.com/1/statuses/ > update.json"); > > curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); > curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); > curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect: ", > "Authorization: $auth")); > curl_setopt($ch, CURLOPT_POST, true); > curl_setopt($ch, CURLOPT_POSTFIELDS, $a); > > $b = curl_exec($ch); > > For the double encoding of the base string, I thought that was > procedural. All of the documents I've read said that the string should > be double encoded for this to work properly which is why my base > string is double encoded. > > Either way, with the following changes in place, I still get the same > error. > > On Aug 18, 1:51 pm, Taylor Singletary <taylorsinglet...@twitter.com> > wrote: > > > First guesses: your current implementation is incompatible for statuses > > containing space characters or non-alphanumeric characters. > > > You are rawurlencoding your status parameter while building your signature > > base string.. which is correct -- except, you should have URL encoded your > > status value before-hand, such that you're encoding it again in your > > signature base string. > > > I also can't ascertain in this code where you're actually presenting your > > POST body to the request. You'll also want to pass a Content-Type header on > > POST requests containing a POST body indicating the disposition of your > > content. > > > Taylor > > > On Wed, Aug 18, 2010 at 10:40 AM, Olu <oowos...@gmail.com> wrote: > > > Hi, I've been able to get a token and secret for an user but however, > > > I'm getting an error while trying to use the status/update call. I've > > > googled the problem and tried several solutions but none seems to > > > work. I'm not sure what the problem is and I've been looking at this > > > for hours. I would appreciate another pair of eyes on this. Any help > > > would be greatly appreciated. PHP code below. > > > > <?php > > > > $oauth_consumer_key = "XXXX"; > > > $oauth_consumer_secret = "YYYY"; > > > $oauth_nonce = sha1(time()); > > > $oauth_signature_method = "HMAC-SHA1"; > > > $oauth_timestamp = time(); > > > $oauth_version = "1.0"; > > > $oauth_token = "AAA"; > > > $token_secret = "BBBB"; > > > > $status = "testing test"; > > > > $baseString = "oauth_consumer_key=" . > > > rawurlencode($oauth_consumer_key) . "&oauth_nonce=" . > > > rawurlencode($oauth_nonce) . "&oauth_signature_method=" . > > > rawurlencode($oauth_signature_method) . "&oauth_timestamp=" . > > > rawurlencode($oauth_timestamp) . "&oauth_token=" . > > > rawurlencode($oauth_token) . "&oauth_version=" . > > > rawurlencode($oauth_version) . "&status=" . rawurlencode($status); > > > > $baseString = "POST&" . rawurlencode("http://api.twitter.com/1/ > > > statuses/update.json") . "&" . rawurlencode($baseString); > > > > $signing_key = rawurlencode($oauth_consumer_secret) . "&" . > > > rawurlencode($token_secret); > > > > $signature = base64_encode(hash_hmac('sha1', $baseString, > > > $signing_key, true)); > > > > $auth = "OAuth oauth_nonce=\"" . $oauth_nonce . > > > "\",oauth_signature_method=\"" . $oauth_signature_method . > > > "\",oauth_timestamp=\"" . $oauth_timestamp . "\",oauth_consumer_key= > > > \"" . $oauth_consumer_key . "\",oauth_token=\"" . > > > rawurlencode($oauth_token) . "\",oauth_signature=\"" . > > > rawurlencode($signature) ."\",oauth_version=\"" . $oauth_version . > > > "\""; > > > > $ch = curl_init("http://api.twitter.com/1/statuses/update.json"); > > > > curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); > > > curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); > > > curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect: ", "Authorization: > > > $auth")); > > > > $b = curl_exec($ch); > > > > var_dump($b); > > > > curl_close($ch);