Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Need a Net::OAuth POST example

by Rodster001 (Pilgrim)
on Feb 18, 2016 at 22:13 UTC ( [id://1155593]=perlquestion: print w/replies, xml ) Need Help??

Rodster001 has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

I've been using Net::OAuth for sometime, but only with GET requests. I need to do a POST but I am having trouble figuring out how/where to add the POST body to the request (and not end up as query string parameters to the URL).
my $ua = LWP::UserAgent->new; my $content = { example => "content", name => "me" } my $request = Net::OAuth->request("protected resource")->new( consumer_key => <key>, consumer_secret => <secret>, request_url => 'https://someplace.whatever', request_method => 'POST', signature_method => 'HMAC-SHA1', timestamp => time(), nonce => 'kllo9940pd9333jh', token => <token>, token_secret => <secret>, extra_params => { foo => 'bar' } ); $request->sign; my $res = $ua->post( $request->to_url, Content_Type => 'form-data', Content => $content );
So, this obviously doesn't work because the $content is added after it is signed. I am just not sure where the form content needs to be added when I create the Net::OAuth request (parameter name or what). I've tried several ways but nothing is really working for me.

Any help is greatly appreciated.

Replies are listed 'Best First'.
Re: Need a Net::OAuth POST example
by Mr. Muskrat (Canon) on Feb 19, 2016 at 00:03 UTC

    I have never used Net::OAuth but after a quick read through the docs, I think the correct answer is to put $content in extra_params and use to_post_body in the post method call.

    my $ua = LWP::UserAgent->new; my $content = { example => "content", name => "me" } my $request = Net::OAuth->request("protected resource")->new( consumer_key => <key>, consumer_secret => <secret>, request_url => 'https://someplace.whatever', request_method => 'POST', signature_method => 'HMAC-SHA1', timestamp => time(), nonce => 'kllo9940pd9333jh', token => <token>, token_secret => <secret>, extra_params => { foo => 'bar', %{$content} } ); $request->sign; my $res = $ua->post( $request->to_url, Content_Type => 'form-data', Content => $request->to_post_body, );

    I found a post from 2011 which seems to indicate that I am on the right track: https://txlab.wordpress.com/2011/09/03/using-tumblr-api-v2-from-perl/

    Update: Another option would be to use Net::OAuth::Simple which seems basically do the same thing behind the scenes.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1155593]
Approved by Tanktalus
Front-paged by Tanktalus
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2024-03-29 06:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found