2009-08-02 4 views
1

J'ai enregistré une application avec Twitter. J'utilise Net :: Twitter :: OAuth pour gérer l'interaction avec Twitter.Pourquoi ne puis-je pas avoir un accès en écriture sur Twitter avec Net :: Twitter :: OAuth?

J'ai réussi à rediriger l'utilisateur pour lui permettre d'installer l'application sur son compte Twitter. L'application est installée avec lecture & accès en écriture. J'ai un accès en lecture, mais je n'ai réussi à envoyer aucun tweet en son nom: Twitter renvoie que l'appel n'est pas autorisé. J'utilise mon propre compte Twitter pour tester.

Voici le code que j'utilise (Perl & Catalyst):

# step 1: Redirect user to Twitter 
my $client = Net::Twitter::OAuth->new(
traits   => ['OAuth'], 
consumer_key => Bargain->config->{'consumer_key'}, 
consumer_secret => Bargain->config->{'consumer_secret'}, 
); 

my $url = $client->oauth->get_authorization_url({ callback => $callback_url}); 

$c->response->cookies->{oauth} = { 
     value => { 
      token => $client->request_token, 
      token_secret => $client->request_token_secret, 
     }, 
}; 

$c->response->redirect($url); 


# step 2 - After installing the app, Twitter redirects the user here 
my $verifier = $c->req->params->{oauth_verifier}; 
my $oauth_token = $c->req->params->{oauth_token}; 

$client->request_token($client->request_token); 
$client->request_token_secret($client->request_token_secret); 

my($access_token, $access_token_secret) = 
    $client->request_access_token(verifier => $verifier); 

# step 3 - With all the info, Access suer account 
my $nt = Net::Twitter::OAuth->new(
    traits   => ['OAuth'], # 'API::REST', 
    consumer_key => Bargain->config->{'consumer_key'}, 
    consumer_secret => Bargain->config->{'consumer_secret'}, 
); 

$nt->access_token($access_token); 
$nt->access_token_secret($access_token_secret); 

if ($nt->authorized) { 
    print "Authorized, sending tweets\n"; 
    print $nt->friends_timeline, "\n"; # OK 

    $nt->update('First example'); # Does not work 
} 

Toute idée de ce que je manque, ou ce que je fais mal?

Répondre

3

Le docs pour Net::Twitter::Oauth revendication:

Ce module est obsolète. Utilisez Net::Twitter à la place.

Il semble que vous devriez utiliser Net::Twitter::Role::OAuth pour le code moderne.

+0

Thnaks, cela semble fonctionner. comment puis-je obtenir l'ID utilisateur? Il est nécessaire pour obtenir le statut de l'utilisateur, mais je ne vois aucune fonction pour obtenir l'ID/nom d'utilisateur – Julien

+0

Il s'est avéré que je n'avais pas la dernière version: 3.04003 au lieu de 3.04006 – Julien

Questions connexes