#!/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