Nick

I'm no expert but have this working, here is a copy of mine, try modifying this with your data.

Code:
// start autoTweet 3.0
//User Settings.
$consumerKey = "xxxxxxxxxxxxxxx"; //twitter app consumer key.
$consumerSecret = "xxxxxxxxxxxxxx"; //twitter app consumer secret.
$oauthToken = "xxxxxxxxxxxxxxxxx"; //twitter app "my access" token
$oauthTokenSecret = "xxxxxxxxxxxxxxxx"; //twitter app "my access" token secret.
$bitlyUsername = "bitly2011"; //bit.ly username
$bitApiKey = "R_8888888888888888888888883"; //bit.ly api key.
$storeUrl = "www.domain.co.uk"; //url to the homepage of your store no http.
$showprice = 0; // Show the product price? 0 = off, 1 = on. no quotes.
$timeout = 10; //seconds to wait for twitter & bit.ly. This can be left alone.

//do not edit below this line.
$prodUrl = urlencode(zen_catalog_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_id));
//short url function.
function shortenUrl($user, $key, $shortenUrl){
    $url = 'http://api.bit.ly/v3/shorten?login=' . $user .'&apiKey='. $key . '&longUrl=' . $shortenUrl . '&format=xml';

          $ch = curl_init();
          curl_setopt($ch,CURLOPT_URL,$url);
          curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, $timeout);
          $data = curl_exec($ch);
          curl_close($ch);
    return $data;
}
//use oAuth library
require_once 'twitteroauth/twitteroauth.php';
//function to shorten url
$shorten = shortenUrl($bitlyUsername, $bitApiKey, $prodUrl);
//start message w/ or w/out price
$message = "New product available: " . $_POST['products_name'][$_SESSION['languages_id']] . '!';
if ($showprice){ $message .=  ' Only $' . $products_price . '.'; }
//if shorten fails use $storeUrl
$bitStatus = simplexml_load_string($shorten);
$http_code = $bitStatus->status_code;
$status_txt = $bitStatus->status_txt;
if ($http_code != 200){$shorten = $storeUrl;
    $biterror = "URL was not shortened for Twitter: ";
    $biterror .= $storeUrl . " was used instead.";
    $biterror .= " Reason: " . $status_txt;
   $messageStack->add_session($biterror, 'caution');
} else { $shorten = $bitStatus->data->url;}
//finish message.
$message .= ' Check it out now at ' . $shorten;
//the connection to twitter API
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthTokenSecret);
$connection->timeout = $timeout;
$connection->connecttimeout = $timeout;
//send message
$tweet = $connection->post('statuses/update', array('status' => $message));
//error check
if ($connection->http_code != NULL){
    if ($connection->http_code != 200){
    $error = "Twitter could not be updated: " . $connection->http_header["status"] . ": ";
    $error .= $tweet->error;
    $error .= "<br />To paste the code into twitter yourself use: <br />" . $message;
    $messageStack->add_session($error, 'error');
    } else {
     $messageStack->add_session('Twitter Updated!', 'success');
    }
} else {
  $error = "Twitter could not be updated: Could not connect or there was nothing to do once connected.<br />
  Twitter may be down or over capacity. To paste the code into twitter yourself use: <br />";
  $messageStack->add_session($error, 'error');
  $messageStack->add_session($message, 'caution');
}
// end autoTweet 3.0

Regards Dave