Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$old_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ext-thumbnail_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
Sviluppo: interagire con Twitter utilizzando il protocollo OAuth | IlSoftware.it

Sviluppo: interagire con Twitter utilizzando il protocollo OAuth

Dopo averlo ricordato più volte nei mesi scorsi, Twitter è passato all'azione gettando nel cestino il metodo di autenticazione di base il cui utilizzo è continuato ad essere tollerato sino al 1° settembre.

Dopo averlo ricordato più volte nei mesi scorsi, Twitter è passato all’azione gettando nel cestino il metodo di autenticazione di base il cui utilizzo è continuato ad essere tollerato sino al 1° settembre. Chi ha sviluppato meccanismi per il “posting” automatico di contenuti su Twitter (ad esempio, da applicazioni “stand alone” oppure da una pagina web dinamica) e non ha aggiornato l’algoritmo impiegato per l’invio e la pubblicazione delle informazioni, vedrà sempre restituito il messaggio seguente: “401 – Non autorizzato“.

Com’è possibile procedere per tornare a “cinguettare” su Twitter, per esempio, da uno script PHP?
La prassi è molto simile a quella che a suo tempo avevamo descritto nel caso di Facebook (ved., in merito, questo nostro articolo).
Tutti gli sviluppatori dovranno registrare una nuova applicazione su Twitter e ricorrere all’uso di OAuth, protocollo aperto che di fatto sostituisce definitivamente l’obsoleta autenticazione di base. Rispetto a quest’ultima il vantaggio in termini di sicurezza è innegabile: mentre prima le credenziali di accesso al social network viaggiavano insieme con ciascuna richiesta http/https, adesso ciò non avviene più. Anzi, è addirittura possibile modificare la propria password senza che ciò abbia impatto sull’applicazione (non si dovrà più modificarla o comunque “informarla” del cambio di password applicato).

Come primo passo, è necessario effettuare il login su Twitter quindi accedere a questa pagina creando una nuova applicazione. In corrispondenza del campo Tipo di applicazione bisogna accertarsi di scegliere la seconda opzione che, una volta selezionata, fa apparire – appena più sotto – il campo Callback URL. Qui va indicato l’URL verso il quale dovrà essere reindirizzato il browser ad autenticazione avvenuta con successo: si può digitare, ad esempio, http://127.0.0.1/twitter_login.php.
Come ultimo passo, va selezionata l’opzione Read & Write: così facendo, l’applicazione avrà accesso sia in scrittura che in lettura.

Dopo aver inserito il CAPTCHA e cliccato su Register application, appariranno le condizioni per l’utilizzo delle API di Twitter che dovranno essere accettate cliccando su I accept. Una schermata riassuntiva fungerà da riepilogo per le varie impostazioni dell’applicazione appena creata.
E’ importante notare la presenza delle seguenti indicazioni: Consumer key e Consumer secret. Sono due dati che serviranno per l’autenticazione, più avanti.

Supponiamo di voler realizzare uno script PHP che ci consenta di autenticarci e di pubblicare un contenuto sul nostro profilo Twitter. Grazie ad una libreria (twitteroauth) distribuita sul web è possibile realizzare in pochi minuti l’intera procedura: è sufficiente collegarsi con questa pagina e prelevare la versione più aggiornata della libreria.

Nel nostro caso abbiamo installato un web server su una nostra macchina creato un nuovo sito web e copiato la sottocartella twitteroauth contenuta all’interno del file compresso della libreria omonima.
Se non si dispone di un web server locale ma si dispone di uno spazio web in hosting presso un qualunque provider che supporti gli script PHP, è possibile creare una nuova cartella – ad esempio collegandosi via FTP – e caricarvi, al suo interno, la directory twitteroauth. La sottocartella twitteroauth contiene i file OAuth.php e twitteroauth.php.

Fuori dalla cartella twitteroauth, è necessario creare due file: l’uno chiamato twitter_login.php, l’altro twitter_oauth.php.

Nel file twitter_login.php si incolli quanto segue:

<?php
require("twitteroauth/twitteroauth.php");
session_start();

$twitteroauth = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET');
// Richiesta dei token di autenticazione e URL per il reindirizzamento
$request_token = $twitteroauth->getRequestToken('http://localhost/twitter_oauth.php');

$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

if($twitteroauth->http_code==200){
    $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
    header('Location: '. $url);
} else {
    die('Si è verificato un errore inatteso');
}

?>

Al posto di CONSUMER_KEY e CONSUMER_SECRET vanno specificate le stringhe alfanumeriche precedentemente annotate.
Lo script PHP provvede ad istanziare un oggetto TwitterOAuth, definito per mezzo della libreria invocata all’inizio del file quindi a richiedere i cosiddetti token di autenticazioni, salvati poi in due variabili di sessione.
Nel caso in cui Twitter restituisca il codice HTTP 200 (tutto è andato bene), lo script provvede ad effettuare un redirect verso l’indirizzo http://localhost/twitter_oauth.php. Tale URL va sostituito con l’indirizzo corretto.

Nella stessa cartella in cui si è salvato il file twitter_login.php, è necessario creare un secondo script PHP: twitter_oauth.php. All’interno di esso va incollato il codice seguente:

<?php
require("twitteroauth/twitteroauth.php");
session_start();

if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret'])){

// INIZIO OPERAZIONI DA COMPIERE SU TWITTER
$twitteroauth = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

$access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
$_SESSION['access_token'] = $access_token;

// Recupera le informazioni sull'utente
$user_info = $twitteroauth->get('account/verify_credentials');
print_r($user_info->screen_name);

$twitteroauth->post('statuses/update', array('status' => 'Prova posting OAuth'));

// FINE OPERAZIONI DA COMPIERE SU TWITTER

} else {
    // C'è qualcosa che non va. Torna alla pagina di login.
    header('Location: twitter_login.php');
}
?>

In questo caso, lo script controlla il formato della query in ingresso controllando che non ci siano parametri vuoti quindi crea un’istanza di TwitterOAuth specificando i token precedentemente ottenuti.

Tutto è pronto: con l’istruzione print_r($user_info->screen_name); viene mostrato il nome dell’utente scelto per l’account di Twitter. Con l’istruzione print_r($user_info->id); si può ottenere, invece, il numero identificativo abbinato all’account.

La successiva istruzione ($twitteroauth->post('statuses/update', array('status' => 'Prova posting OAuth'));) s’incarica di pubblicare la frase “Prova posting OAuth” sul profilo Twitter dell’utente.

Per verificare che lo script sia funzionante, è sufficiente collegarsi con l’indirizzo http://urldelserverweb/nomedirectory/twitter_login.php, effettuare il login a Twitter (se non si fosse ancora provveduto), quindi cliccare sul pulsante Acconsenti alla comparsa della schermata Una applicazione desidera collegarsi al tuo account:

A questo punto, dopo qualche istante di attesa, dovreste trovare la frase “Prova posting OAuth” immediatamente pubblicata sul vostro profilo Twitter.

Una volta che l’esperimento sarà condotto a termine con successo, si potrà provvedere a cancellare il post di prova dall’account di Twitter.

Nella prossima puntata vedremo come caricare automaticamente una serie di informazioni in modo automatico. Utilizzeremo, allo scopo, il materiale proveniente da un feed RSS.

Ti consigliamo anche

Link copiato negli appunti