Spent the day trying to get OAuth working with PHP, curse August the 31st, first time I've heard of it, etc,etc. Anyhow I need some help to see where I'm going wrong with this code to retireve the auth token Please...
<?php function CalcHmacSha1($data,$key) { $blocksize = 64; $hashfunc = 'sha1'; if (strlen($key) > $blocksize) { $key = pack('H*', $hashfunc($key)); } $key = str_pad($key, $blocksize, chr(0x00)); $ipad = str_repeat(chr(0x36), $blocksize); $opad = str_repeat(chr(0x5c), $blocksize); $hmac = pack( 'H*', $hashfunc( ($key^$opad).pack( 'H*', $hashfunc( ($key^$ipad).$data ) ) ) ); return $hmac; } define("TWITTER_CONSUMER_KEY", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); define("TWITTER_CONSUMER_SECRET", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); define("TWITTER_OAUTH_HOST","https://api.twitter.com"); define("TWITTER_REQUEST_TOKEN_URL", TWITTER_OAUTH_HOST . "/oauth/ request_token"); define("TWITTER_AUTHORIZE_URL", TWITTER_OAUTH_HOST . "/oauth/ authorize"); define("TWITTER_ACCESS_TOKEN_URL", TWITTER_OAUTH_HOST . "/oauth/ access_token"); define("TWITTER_PUBLIC_TIMELINE_API", TWITTER_OAUTH_HOST . "/statuses/ public_timeline.json"); define("TWITTER_UPDATE_STATUS_API", TWITTER_OAUTH_HOST . "/statuses/ update.json"); $oauth_callback="http://www.refreshcreations.co.uk/twittertest/ryan- oauth.php"; define("OAUTH_SIGNATURE_METHOD", "HMAC-SHA1"); $oauth_timestamp = date("YmdHis"); define("OAUTH_VERSION", "1.0"); $oauth_nonce = md5(microtime()); $timestamp = date("YmdHis"); $post_data = "oauth_callback=".$oauth_callback; $post_data.= "&oauth_consumer_key=".TWITTER_CONSUMER_KEY; $post_data.= "&oauth_nonce=".$oauth_nonce; $post_data.= "&oauth_signature_method=".OAUTH_SIGNATURE_METHOD; $post_data.= "&auth_timestamp=".$oauth_timestamp; $post_data.= "&oauth_version=".OAUTH_VERSION; $post_data=rawurlencode($post_data); $post_data.=rawurlencode("&oauth_signature=".CalcHmacSha1($post_data, TWITTER_CONSUMER_SECRET."&")); $auth_header ="X-Verify-Credentials-Authorization: OAuth realm= \"http://api.twitter.com\","; $auth_header.="OAuth oauth_nonce=\"".$oauth_nonce."\", "; $auth_header.="oauth_callback=\"".$oauth_callback."\", "; $auth_header.="oauth_signature_method=\"".OAUTH_SIGNATURE_METHOD."\", "; $auth_header.="oauth_timestamp=\"".$oauth_timestamp."\", "; $auth_header.="oauth_consumer_key=\"".TWITTER_CONSUMER_KEY."\", "; $auth_header.="oauth_signature=\"".CalcHmacSha1($post_data, TWITTER_CONSUMER_SECRET."&")."\", "; $auth_header.="oauth_version=\"".OAUTH_VERSION."\", "; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, TWITTER_REQUEST_TOKEN_URL); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array($auth_header)); $curlresponse = curl_exec($curl); curl_exec($curl); //GET CURL VALUES BACK. $info = curl_getinfo($curl); echo "<dl>"; foreach($info as $key =>$value){ echo "<dt>".$key."</dt><dd>".$value."</dd>"; } echo "</dl>\n"; ?> returns: "Failed to validate oauth signature and token" any ideas? -- 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?hl=en