#!/usr/bin/perl
use cPanelUserConfig;
use Net::Twitter;
use Data::Dumper;
use JSON;
use POSIX qw(strftime);
require "incl/common.pl";
require "incl/html.pl";
$page_size = 140;
$login_days = 10;
my $twitter=Net::Twitter->new(
traits => ['API::RESTv1_1'],
consumer_key => 'xxxxxxxxxx',
consumer_secret => 'xxxxxxxxxxxxxxxxxxxx',
callback => "https://$ENV{'SERVER_NAME'}/cgi-bin/twitter.pl?command=authorize",
ssl => 1,
source => 'BodBot',
);
if ($cookie{'Twitter_tok'} and $cookie{'Twitter_sec'}) {
$twitter->access_token($cookie{'Twitter_tok'});
$twitter->access_token_secret($cookie{'Twitter_sec'});
}
# Code to start the authorisation process
sub twitter {
$auth_url=$twitter->get_authorization_url(callback => "http://$ENV{'SERVER_NAME'}/cgi-bin/twitter.pl?command=authorize");
print "Location: $auth_url\n\n";
exit 0;
}
# Callback from Twitter
sub authorize {
eval{($access_token, $access_token_secret, $user_id, $screen_name)=$twitter->request_access_token(token => $data{'oauth_token'}, token_secret => 'xxxxxxxxxxxxxxxxxxxx', verifier => $data{'oauth_verifier'});};
if ($@) {
print "content-type: text/plain\n\n";
print "ERROR:\n$@\n";
exit 1;
}
&log("Access token obtained for \@$screen_name");
$twitter->access_token($access_token);
$twitter->access_token_secret($access_token_secret);
$expiry="; expires=".(strftime "%a, %d-%b-%Y %H:%M:%S",(gmtime(time() + $login_days*24*3600)))." GMT";
print "Set-cookie: Twitter_tok=$access_token; path=/; expires=$expiry\n";
print "Set-cookie: Twitter_sec=$access_token_secret; path=/; expires=$expiry\n";
print "Location: http://$ENV{'SERVER_NAME'}/cgi-bin/twitter.pl\n\n";
exit 0;
}
# Logout and interact with Twitter
sub logout {
print "Set-cookie: Twitter_tok=xxx; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT\n";
print "Set-cookie: Twitter_sec=xxx; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT\n";
print "Location: http://$ENV{'SERVER_NAME'}/cgi-bin/twitter.pl\n\n";
exit 0;
}
sub XHRfollow {
$result=$twitter->create_friend({ user_id => $data{'user'} });
exit 0;
}
sub XHRunfollow {
$result=$twitter->destroy_friend({ user_id => $data{'user'} });
exit 0;
}
####
{
"serviceErrorCode": 65604,
"message": "Empty oauth2 access token",
"status": 401
}
####
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
use cPanelUserConfig;
use LWP::Authen::OAuth2;
use Data::Dumper;
use strict;
use warnings;
our %data;
require "incl/common.pl";
my $linkedin = LWP::Authen::OAuth2->new(
client_id => 'xxxxxxxxxx',
client_secret => 'xxxxxxxxxx',
authorization_endpoint => 'https://api.linkedin.com/uas/oauth2/authorization',
token_endpoint => 'https://api.linkedin.com/v2/accessToken',
redirect_uri => "https://$ENV{'HTTP_HOST'}/cgi-bin/linkedin.pl?command=authorize_linkedin",
scope => 'w_member_social',
);
if ($data{'command'} eq 'linkedin') {
my $auth_url = $linkedin->authorization_url;
print "Location: $auth_url\n\n";
exit 0;
}
if ($data{'command'} eq 'authorize_linkedin') {
print "Content-type: text-plain\n\n";
my $token = $linkedin->request_tokens(
code => $data{'code'},
);
print "TOKEN: $token\n";
}
print<<"END_HTML";
Content-type: text/html
END_HTML