Postar no Twitter com PHP

No post passado eu expliquei como faz um crawler em PHP para pegar os smartphones com melhor custo benefício no site tudo celular, agora vamos pegar o resultado da busca e postar no twitter, vou assumir que vocês conhecem o Composer, então a primeira coisa a fazer é abrir o arquivo Composer.json

E adicionar essa linha
"j7mbo/twitter-api-php": "^1.0"

Essa biblioteca serve para usar o twitter com PHP, assim podemos postar textos, imagens e fazer consultas também.

Vamos criar uma classe para fazer isso mais fácil, então lá na pasta Classes, crie isso aqui:

<?php

namespace OliviaBlog\Classes;

use TwitterAPIExchange;

class ClassTwitterApi
{

    protected $settings = null;

    public function __construct($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret)
    {
        $this->set_access_tokens($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret);
    }

    private function set_access_tokens($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret)
    {
        $this->settings = array(
            'oauth_access_token' => $oauth_access_token,
            'oauth_access_token_secret' => $oauth_access_token_secret,
            'consumer_key' => $consumer_key,
            'consumer_secret' => $consumer_secret
        );
    }

    public function get_tweet($tweets, $user)
    {
        $url = 'https://api.twitter.com/1.1/search/tweets.json';
        $requestMethod = 'GET';
        $getfield = '?q=to:' . $user . '&sinceId=' . $tweets[0]->id;

        // Perform the request
        $twitter = new TwitterAPIExchange($this->settings);
        $b =  $twitter->setGetfield($getfield)
            ->buildOauth($url, $requestMethod)
            ->performRequest();

        $arr = json_decode($b, TRUE);

        echo "Replies <pre>";
        print_r($arr);
        die;
    }

    public function get_user_tweets($user)
    {
        $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
        $getfield = '?screen_name=' . $user;
        $requestMethod = 'GET';

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

        return json_decode($response);
    }

    public function tweetar_image($dado)
    {
        $conection = new TwitterOAuth(
            $this->settings['consumer_key'],
            $this->settings['consumer_secret'],
            $this->settings['oauth_access_token'],
            $this->settings['oauth_access_token_secret']
        );

        $user = $conection->get('account/verify_credentials');
        $tweetM = $conection->upload('media/upload', array('media' => $dado['image_url']));
        return $conection->post('statuses/update', ['media_ids' => $tweetM->media_id, 'status' => $dado['titulo']]);
    }

    //put your code here
    public function tweetar($dado)
    {
        $url = 'https://api.twitter.com/1.1/statuses/update.json';

        // twitter api endpoint request type
        $requestMethod = 'POST';
        // twitter api endpoint data
        $apiData = array(
            'status' => '' . $dado . '',
        );
        // create new twitter for api communication
        $twitter = new TwitterAPIExchange($this->settings);
        // make our api call to twiiter
        $twitter->buildOauth($url, $requestMethod);
        $twitter->setPostfields($apiData);
        $response = $twitter->performRequest(true, array(CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0));
        // display response from twitter
        return $response;
    }
}

Pronto, agora é só instanciar lá no HomeController e usar essa nova classe para postar no twitter, obviamente você vai precisar criar uma conta no twitter e acessar a área de desenvolvedores no twitter, lá você vai conseguir o:

$consumer_key = ‘’;
$consumer_secret = ‘’;
$oauth_access_token = ‘’;
$oauth_access_token_secret = ‘’;

Agora é só instanciar a classe ClassTwitterApi passando esses dados, depois instanciar a classe ClassTudoCelular que criamos no post passado, e chamar o método twettar passando o método que criamos para gerar o texto com os smartphones.


$twitter = new ClassTwitterApi($oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret);
$tudoCelular = new ClassTudoCelular();
print_r($twitter->tweetar($tudoCelular->get_smartphones()));

Ahhhhhh mas se eu quiser tweetar outra coisa, problema é seu, você pode fazer o que seu coração mandar, se você quiser fazer com que isso seja automático, você pode criar um cronjob que posta isso todo mês, ou uma vez a cada 3 meses mais ou menos, não sei de quanto em quanto tempo essa lista é atualizada.

Aqui abaixo está nossa brincadeira funcionando.

Deixe um comentário