I'm attempting to use PHP to post a tweet to twitter using this class:
https://www.madebymagnitude.com/blog/how-to-automatically-send-tweets-in-php/
<?php
include('TwitterPoster.php');
$status = "Just Send This!";
TwitterPoster::tweet($status);
?>
Open in new window
It does not work. I get this error:
Fatal error: Call to a member function post() on a non-object in /home/polysync/public_html/activist/twitter/test/TwitterPoster.php on line 75
Open in new window
The source for TwitterPoster.php looks OK. I do not see the problem.
I removed the token info from this post.
<?php
# Define constants
define('TWITTER_USERNAME', 'x');
define('CONSUMER_KEY', 'x');
define('CONSUMER_SECRET', 'x');
define('ACCESS_TOKEN', 'x');
define('ACCESS_TOKEN_SECRET', 'x');
define('TWEET_LENGTH', 140);
class TwitterPoster {
private static $library = 'TwitterOAuth';
private static $twitter = NULL;
private static $DBH = NULL;
/**
* connect: Create an object of the Twitter PHP API either TwitterOAuth
* or twitter-api-php
* @access private
*/
private static function connect() {
if(self::$library == 'TwitterOAuth') {
include('TwitterOAuth.php');
# Create the connection
self::$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
# Migrate over to SSL/TLS
self::$twitter->ssl_verifypeer = true;
} else {
include('TwitterAPIExchange.php');
self::$twitter = new TwitterAPIExchange(array(
'oauth_access_token' => ACCESS_TOKEN,
'oauth_access_token_secret' => ACCESS_TOKEN_SECRET,
'consumer_key' => CONSUMER_KEY,
'consumer_secret' => CONSUMER_SECRET
));
}
}
/**
* setDatabase: Pass in a PDO connection, if you've already got one
* @param $database PDO
*/
public static function setDatabase($database) {
self::$DBH = $database;
}
/**
* tweet: Post a new status to Twitter
* @param $message string
* @access public
*/
public static function tweet($message = '') {
if(empty($message)) {
return;
}
# Load the Twitter object
if(is_null(self::$twitter)) {
self::connect();
}
if(self::$library == 'TwitterOAuth') {
echo $message;
$response = $twitter->post('statuses/update', array('status' => $message));
echo $response;
} else {
$url = 'https://api.twitter.com/1.1/statuses/update.json';
$requestMethod = 'POST';
$postData = array('status' => $message);
$response = $twitter->buildOauth($url, $requestMethod)->setPostfields($postData)->performRequest();
}
return $response['id'];
}
/**
* randomTweet: Send a random tweet from your database connection
* @access public
*/
public function randomTweet() {
$status="Just Send this!";
self::tweet($status);
}
}
?>
Open in new window