J7mbo / twitter-api-php

The simplest PHP Wrapper for Twitter API v1.1 calls
MIT License
1.82k stars 800 forks source link
php twitter twitter-api twitter-client twitter-oauth twitterapi twitterapiexchange

twitter-api-php

Simple PHP Wrapper for Twitter API v1.1 calls

Total Downloads Build Status Version

Changelog || Examples || Wiki

Instructions in StackOverflow post here with examples. This post shows you how to get your tokens and more. If you found it useful, please upvote / leave a comment! :)

The aim of this class is simple. You need to:

You really can't get much simpler than that. The above bullet points are an example of how to use the class for a POST request to block a user, and at the bottom is an example of a GET request.

Installation

Normally: If you don't use composer, don't worry - just include TwitterAPIExchange.php in your application.

require_once('TwitterAPIExchange.php');

Via Composer:

composer require j7mbo/twitter-api-php

How To Use

Set access tokens

$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

Choose URL and Request Method

$url = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';

Choose POST fields (or PUT fields if you're using PUT)

$postfields = array(
    'screen_name' => 'usernameToBlock', 
    'skip_status' => '1'
);

Perform the request!

$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
    ->setPostfields($postfields)
    ->performRequest();

GET Request Example

Set the GET field BEFORE calling buildOauth(); and everything else is the same:

$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?screen_name=J7mbo';
$requestMethod = 'GET';

$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
    ->buildOauth($url, $requestMethod)
    ->performRequest();

That is it! Really simple, works great with the 1.1 API. Thanks to @lackovic10 and @rivers on SO!