Net-Twitter
view release on metacpan or search on metacpan
lib/Net/Twitter/Role/OAuth.pm view on Meta::CPAN
}
sub oauth_authorization_url {
carp "DEPRECATED: use get_authorization_url instead";
shift->get_authorization_url(@_)
}
sub oauth {
carp "DEPRECATED: call this method on Net::Twitter itself, rather than through the oauth accessor";
shift
}
1;
__END__
=encoding utf-8
=for stopwords
=head1 NAME
Net::Twitter::Role::OAuth - Net::Twitter role that provides OAuth instead of Basic Authentication
=head1 VERSION
version 4.01043
=head1 SYNOPSIS
use Net::Twitter;
my $nt = Net::Twitter->new(
traits => ['API::RESTv1_1', 'OAuth'],
consumer_key => "YOUR-CONSUMER-KEY",
consumer_secret => "YOUR-CONSUMER-SECRET",
);
# Do some Authentication work. See EXAMPLES
my $tweets = $nt->friends_timeline;
my $res = $nt->update({ status => "I CAN HAZ OAUTH!" });
=head1 DESCRIPTION
Net::Twitter::Role::OAuth is a Net::Twitter role that provides OAuth
authentication instead of the default Basic Authentication.
Note that this client only works with APIs that are compatible to OAuth authentication.
=head1 IMPORTANT
Beginning with version 3.02, it is necessary for web applications to pass the
C<callback> parameter to C<get_authorization_url>. In the absence of a
callback parameter, when the user authorizes the application a PIN number is
displayed rather than redirecting the user back to your site.
=head1 EXAMPLES
See the C<examples> directory in this distribution for working examples of both
desktop and web applications.
Here's how to authorize users as a desktop app mode:
use Net::Twitter;
my $nt = Net::Twitter->new(
traits => ['API::RESTv1_1', 'OAuth'],
consumer_key => "YOUR-CONSUMER-KEY",
consumer_secret => "YOUR-CONSUMER-SECRET",
);
# You'll save the token and secret in cookie, config file or session database
my($access_token, $access_token_secret) = restore_tokens();
if ($access_token && $access_token_secret) {
$nt->access_token($access_token);
$nt->access_token_secret($access_token_secret);
}
unless ( $nt->authorized ) {
# The client is not yet authorized: Do it now
print "Authorize this app at ", $nt->get_authorization_url, " and enter the PIN#\n";
my $pin = <STDIN>; # wait for input
chomp $pin;
my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $pin);
save_tokens($access_token, $access_token_secret); # if necessary
}
# Everything's ready
In a web application mode, you need to save the oauth_token and
oauth_token_secret somewhere when you redirect the user to the OAuth
authorization URL.
sub twitter_authorize : Local {
my($self, $c) = @_;
my $nt = Net::Twitter->new(traits => [qw/API::RESTv1_1 OAuth/], %param);
my $url = $nt->get_authorization_url(callback => $callbackurl);
$c->response->cookies->{oauth} = {
value => {
token => $nt->request_token,
token_secret => $nt->request_token_secret,
},
};
$c->response->redirect($url);
}
And when the user returns back, you'll reset those request token and
secret to upgrade the request token to access token.
sub twitter_auth_callback : Local {
my($self, $c) = @_;
my %cookie = $c->request->cookies->{oauth}->value;
my $verifier = $c->req->params->{oauth_verifier};
my $nt = Net::Twitter->new(traits => [qw/API::RESTv1_1 OAuth/], %param);
$nt->request_token($cookie{token});
$nt->request_token_secret($cookie{token_secret});
my($access_token, $access_token_secret, $user_id, $screen_name)
= $nt->request_access_token(verifier => $verifier);
# Save $access_token and $access_token_secret in the database associated with $c->user
}
Later on, you can retrieve and reset those access token and secret
before calling any Twitter API methods.
sub make_tweet : Local {
my($self, $c) = @_;
my($access_token, $access_token_secret) = ...;
my $nt = Net::Twitter->new(traits => [qw/API::RESTv1_1 OAuth/], %param);
$nt->access_token($access_token);
$nt->access_token_secret($access_token_secret);
# Now you can call any Net::Twitter API methods on $nt
my $status = $c->req->param('status');
my $res = $nt->update({ status => $status });
}
=head1 METHODS
=over 4
=item authorized
Whether the client has the necessary credentials to be authorized.
Note that the credentials may be wrong and so the request may fail.
=item request_access_token(verifier => $verifier)
Request the access token, access token secret, user id and screen name for
this user. You must pass the PIN# (for desktop applications) or the
C<oauth_verifier> value, provided as a parameter to the oauth callback
(for web applications) as C<$verifier>.
The user must have authorized this app at the url given by C<get_authorization_url> first.
Returns the access_token, access_token_secret, user_id, and screen_name in a
list. Also sets them internally so that after calling this method, you can
immediately call API methods requiring authentication.
=item xauth($username, $password)
Exchanges the C<$username> and C<$password> for access tokens. This method has
the same return value as C<request_access_token>: access_token, access_token_secret,
user_id, and screen_name in a list. Also, like C<request_access_token>, it sets
the access_token and access_secret, internally, so you can immediately call API
methods requiring authentication.
=item get_authorization_url(callback => $callback_url)
Get the URL used to authorize the user. Returns a C<URI> object. For web
applications, pass your applications callback URL as the C<callback> parameter.
No arguments are required for desktop applications (C<callback> defaults to
C<oob>, out-of-band).
=item get_authentication_url(callback => $callback_url)
Get the URL used to authenticate the user with "Sign in with Twitter"
authentication flow. Returns a C<URI> object. For web applications, pass your
applications callback URL as the C<callback> parameter. No arguments are
required for desktop applications (C<callback> defaults to C<oob>, out-of-band).
=item access_token
Get or set the access token.
=item access_token_secret
Get or set the access token secret.
=item request_token
Get or set the request token.
=item request_token_secret
Get or set the request token secret.
=back
=head1 DEPRECATED METHODS
=over 4
=item oauth
Prior versions used Net::OAuth::Simple. This method provided access to the
contained Net::OAuth::Simple object. Beginning with Net::Twitter 3.00, the
OAuth methods were delegated to Net::OAuth::Simple. They have since made first
class methods. Net::Simple::OAuth is no longer used. A warning will be
displayed when accessing OAuth methods via the <oauth> method. The C<oauth>
method will be removed in a future release.
=item is_authorized
Use C<authorized> instead.
=item oauth_authorization_url
Use C<get_authorization_url> instead.
=item oauth_token
$nt->oauth_token($access_token, $access_token_secret);
Use C<access_token> and C<access_token_seccret> instead:
$nt->access_token($access_token);
$nt->access_token_secret($access_token_secret);
=back
=head1 ACKNOWLEDGEMENTS
This module was originally authored by Tatsuhiko Miyagawa as
C<Net::Twitter::OAuth>, a subclass of the C<Net::Twitter> 2.x. It was
refactored into a Moose Role for use in C<Net::Twitter> 3.0 and above by Marc
Mims. Many thanks to Tatsuhiko for the original work on both code and
documentation.
=head1 AUTHORS
( run in 0.643 second using v1.01-cache-2.11-cpan-39bf76dae61 )