Just glancing at the code it looks like create() is using GET instead of POST.
On Mon, Jun 15, 2009 at 14:28, Matt Sanford <m...@twitter.com> wrote: > > Hi there, > > Thanks for including code, but the most helpful thing would be the error > message you're getting. Looking over several pages of code it is a little > tough to pick something out but the body of the response you get should give > a reason why the method failed. Please collect that and let us know. > > Thanks; > – Matt Sanford / @mzsanford > Twitter Dev > > > On Jun 14, 2009, at 11:07 PM, cbrechb...@gmail.com wrote: > > >> Hi, >> I am having trouble, in fact absolutely no success, using my php >> script create friendships. If you could find the error in my code/ >> give me a code that works I would greatly appreciate it! >> In the code below the update function works perfectly but the >> followers and create function don't work at all. >> Below is my code: >> >> $uname = $_POST['username']; >> $upass = $_POST['pass']; >> >> include("./Twitter.class.php"); >> >> >> $twitter = new Twitter(); >> $twitter->username = $uname; >> $twitter->password = $upass; >> // Show public timeline >> echo $twitter->followers('xml'); >> // Update your status >> echo $twitter->update('xml','Just increased my followers...'); >> // Start following a user >> echo $twitter->create('xml','commonsensegov'); >> >> As you can see I am using twitter.class.php which I have included >> below: >> <?php >> >> /* This program is free software: you can redistribute it and/or >> modify >> * it under the terms of the GNU General Public License as >> published by >> * the Free Software Foundation, either version 3 of the License, >> or >> * (at your option) any later version. >> >> * This program is distributed in the hope that it will be useful, >> * but WITHOUT ANY WARRANTY; without even the implied warranty of >> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> * GNU General Public License for more details. >> >> * You should have received a copy of the GNU General Public >> License >> * along with this program. If not, see <http://www.gnu.org/ >> licenses/>. >> * >> * File: Twitter.class.php >> * Author: Brandon Trebitowski >> * Created: 02/26/2009 >> * Version: 1.0 >> */ >> >> class Twitter { >> >> >> var $username=''; >> var $password=''; >> var $responseInfo=array(); >> >> // Status Methods >> /* >> * Returns the 20 most recent statuses from non-protected >> users >> * who have set a custom user icon. Does not require >> authentication. >> * Note that the public timeline is cached for 60 seconds >> so >> requesting >> * it more often than that is a waste of resources. >> */ >> function public_timeline($format) { >> $request = ' >> http://twitter.com/statuses/public_timeline.'.$format; >> return $this->process($request); >> } >> >> /* Returns the 20 most recent statuses posted by the >> authenticating >> * user and that user's friends. This is the equivalent of >> /home on >> the Web. >> */ >> function friends_timeline($format='xml',$count=20) { >> $request = ' >> http://twitter.com/statuses/friends_timeline.'.$format; >> $postargs = "count=$count"; >> return $this->process($request,$postargs); >> } >> >> /* Returns the 20 most recent statuses posted from the >> authenticating user. >> * It's also possible to request another user's timeline >> via the id >> parameter >> * below. This is the equivalent of the Web /archive page >> for your >> own user, >> * or the profile page for a third party. >> */ >> function user_timeline($format='xml',$id=null) { >> $request = ' >> http://twitter.com/statuses/user_timeline.'.$format; >> if($id) { >> $postargs = "id=$id"; >> return $this->process($request,$postargs); >> } >> return $this->process($request); >> } >> >> /* Updates the authenticating user's status. Requires the >> status >> parameter >> * specified below. Request must be a POST. A status >> update with >> text identical >> * to the authenticating user's current status will be >> ignored. >> */ >> function update($format = 'xml',$status){ >> $request = ' >> http://twitter.com/statuses/update.'.$format; >> $postargs = 'status='.urlencode($status); >> return $this->process($request,$postargs); >> } >> >> /* Returns the 20 most recent @replies (status updates >> prefixed with >> @username) >> * for the authenticating user. >> */ >> function replies($format='xml') { >> $request = ' >> http://twitter.com/statuses/replies.'.$format; >> return $this->process($request); >> } >> >> // User Methods >> /* Returns the authenticating user's friends, each with >> current >> status inline. >> * They are ordered by the order in which they were added >> as >> friends. It's also >> * possible to request another user's recent friends list >> via the id >> parameter below. >> */ >> function friends($format='xml',$id=null,$page=1) { >> $request = ' >> http://twitter.com/statuses/friends.'.$format; >> $postargs = "page=$page"; >> if($id) { >> $postargs .= "&id=$id"; >> } >> return $this->process($request,$postargs); >> } >> >> /* Returns the authenticating user's followers, each with >> current >> status inline. >> * They are ordered by the order in which they joined >> Twitter (this >> is going to be changed). >> */ >> function followers($format='xml',$id=null,$page=1) { >> $request = ' >> http://twitter.com/statuses/followers.'.$format; >> $postargs = "page=$page"; >> if($id) { >> $postargs .= "&id=$id"; >> } >> return $this->process($request,$postargs); >> } >> >> /* Returns extended information of a given user, specified >> by ID or >> screen name >> * as per the required id parameter below. This >> information >> includes design settings, >> * so third party developers can theme their widgets >> according to a >> given user's preferences. >> * You must be properly authenticated to request the page >> of a >> protected user. >> */ >> function show($format='xml',$id) { >> $postargs = ""; >> >> $request = 'http://twitter.com/users/show/'.$id >> .".$format"; >> >> return $this->process($request); >> } >> >> // Friendship Methods >> >> /* Befriends the user specified in the ID parameter as the >> authenticating user. >> * Returns the befriended user in the requested format when >> successful. Returns >> * a string describing the failure condition when >> unsuccessful. >> */ >> function create($format='xml',$user_ID) { >> $request = " >> http://twitter.com/friendships/create/$user_ID. >> $format"; >> return $this->process($request); >> } >> >> /* Discontinues friendship with the user specified in the >> ID >> parameter as the >> * authenticating user. Returns the un-friended user in >> the >> requested format >> * when successful. Returns a string describing the >> failure >> condition when unsuccessful. >> */ >> function destroy($format='xml',$user_ID) { >> $request = " >> http://twitter.com/friendships/destroy/$user_ID. >> $format"; >> return $this->process($request); >> } >> >> /* Tests if a friendship exists between two users. >> */ >> function exists($format='xml',$user_ID_a,$user_ID_b) { >> $request = " >> http://twitter.com/friendships/exists.$format?user_a= >> $user_ID_a&user_b=$user_ID_b"; >> return $this->process($request); >> } >> >> /* Old Processes a Twitter Request using cURL >> function process($url,$postargs=false){ >> >> // Initialize CURL >> $ch = curl_init($url); >> >> // Tell CURL we are doing a POST >> curl_setopt ($ch, CURLOPT_POST, true); >> // Give CURL the arguments in the POST >> >> curl_setopt ($ch, CURLOPT_POSTFIELDS, $postargs); >> // Set the username and password in the CURL call >> curl_setopt($ch, CURLOPT_USERPWD, >> $this->username.':'.$this->password); >> // Set some cur flags (not too important) >> >> curl_setopt($ch, CURLOPT_VERBOSE, 1); >> curl_setopt($ch, CURLOPT_NOBODY, 0); >> curl_setopt($ch, CURLOPT_HEADER, 0); >> curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); >> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); >> >> // execute the CURL call >> $response = curl_exec($ch); >> >> // Get information about the response >> $this->responseInfo=curl_getinfo($ch); >> // Close the CURL connection >> curl_close($ch); >> // Make sure we received a response from Twitter >> if(intval($this->responseInfo['http_code'])==200){ >> // Display the response from Twitter >> return 'Success! <br /> ' . $response . ''; >> }else{ >> // Something went wrong >> return "Error: " . >> $this->responseInfo['http_code']; >> } >> } >> >> >> */ >> function process($url,$postargs=false){ >> >> $ch = curl_init($url); >> >> if($postargs !== false){ >> curl_setopt ($ch, CURLOPT_POST, true); >> curl_setopt ($ch, CURLOPT_POSTFIELDS, $postargs); >> } >> >> if($this->username !== false && $this->password !== false) >> curl_setopt($ch, CURLOPT_USERPWD, $this->username.':'. >> $this->password); >> >> curl_setopt($ch, CURLOPT_VERBOSE, 1); >> curl_setopt($ch, CURLOPT_NOBODY, 0); >> curl_setopt($ch, CURLOPT_HEADER, 0); >> curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent); >> curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); >> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); >> >> >> $response = curl_exec($ch); >> >> $this->responseInfo=curl_getinfo($ch); >> curl_close($ch); >> >> >> if(intval($this->responseInfo['http_code'])==200){ >> if(class_exists('SimpleXMLElement')){ >> $xml = new SimpleXMLElement($response); >> return $xml; >> }else{ >> return $response; >> } >> }else{ >> return false; >> } >> } >> } >> >> >> >> ?> >> > > -- Abraham Williams | Community | http://web608.org Hacker | http://abrah.am | http://twitter.com/abraham Project | http://fireeagle.labs.poseurtech.com This email is: [ ] blogable [x] ask first [ ] private.