Your code works like this:

#!/usr/bin/perl -w

use strict;
use Getopt::Long;
use HTTP::Request::Common "GET";
use LWP::UserAgent;
use Digest::MD5  qw(md5 md5_hex md5_base64);
use Net::OAuth;
require 5.6.0;

my $lwp_object = LWP::UserAgent->new;

my $user_email = "[email protected]";
my $consumer_key = "domain.com";
my $consumer_secret = "gyEe...........";
my $url = "http://www.google.com/m8/feeds/contacts/$user_email/full";;
my $time = time;
my $nonce = md5_hex("nonce_key".$time);

my $request = Net::OAuth->request('consumer')->new(
                       consumer_key => $consumer_key,
                       consumer_secret => $consumer_secret,
                       request_url => $url,
                       signature_method => 'HMAC-SHA1',
                       request_method => 'GET',
                       timestamp => $time,
                       nonce => $nonce,
                       extra_params =>  {
                               xoauth_requestor_id => $user_email,
                               'max-results' => 1000,
                       },
                      );
$request->sign;
my $lwp_request = GET $request->to_url;
my $response = $lwp_object->request($lwp_request);
print $response->content;



On Apr 1, 8:49 pm, Rex  Roof <[email protected]> wrote:
> heh, I don't even know why I would want to use V2 or not.   I modified
> my request to add the content-type header.
> I think Net::OAuth is creating the Authorization header already.
> This is still failing with the exact same error.
>
> Are there any examples of doing a GET request using perl and a 2-
> legged OAuth?
>
> -Rex
>
> On Apr 1, 12:51 pm, "Julian (Google)" <[email protected]> wrote:
>
> > Hi,
>
> > I think you are missing the Content-Type and Authorization headers for
> > the GET:
>
> > Content-Type: application/x-www-form-urlencoded
> > Authorization: OAuth
>
> > If you want to use V2, you may also need the header:
> > GData-Version: 2
>
> > -Julian.
>
> > On Mar 31, 6:24 pm, Rex  Roof <[email protected]> wrote:
>
> > > I am attempting to get a list of Google Apps contacts for a migration
> > > tool written in Perl.  I have no problem processing a PUT request when
> > > making a new contact, but when I'm trying to process a GET request for
> > > a user I always get returned an "Authorization required" error.   This
> > > is not a web application, and I'm using two-legged authentication as
> > > an admin of my domain.
> > > Here is how I'm creating the request, using Net::OAuth:
>
> > >    my $url = "http://www.google.com/m8/feeds/contacts/$user_email/
> > > full";
> > >    my $time = time;
> > >    my $nonce = md5_hex("nonce_key".$time);
>
> > >    my $request = Net::OAuth->request('consumer')->new(
> > >                         consumer_key => $consumer_key,
> > >                         consumer_secret => $consumer_secret,
> > >                         request_url => $url,
> > >                         signature_method => 'HMAC-SHA1',
> > >                         request_method => 'GET',
> > >                         timestamp => $time,
> > >                         nonce => $nonce,
> > >                         extra_params =>  {
> > >                                 xoauth_requestor_id => $user_email,
> > >                                 'max-results' => 1000,
> > >                         },
> > >                        );
> > >    $request->sign;
> > >    my $lwp_request = GET $request->to_url;
> > >    my $response = $lwp_object->request($lwp_request);
>
> > > Here is code that does work, though, using a POST request.   very
> > > similar process:
>
> > >   my $cont_url = "http://www.google.com/m8/feeds/contacts/$user/full";;
> > >   my $time = time;
> > >   my $nonce = md5_hex("nonce_key".$time);
> > >   my $oauth_request = Net::OAuth->request('consumer')->new(
> > >           consumer_key => $consumer_key,
> > >           consumer_secret => $consumer_secret,
> > >           request_url => $cont_url,
> > >           request_method=>'POST',
> > >           signature_method => 'HMAC-SHA1',
> > >           timestamp => $time,
> > >           nonce => $nonce,
> > >           extra_params =>  {
> > >                  xoauth_requestor_id => $user,
> > >           },
> > >   );
> > >   $oauth_request->sign;
> > >   my $lwp_request = POST(
> > >                       $oauth_request->to_url,
> > >                       Content_Type => 'application/atom+xml',
> > >                       Content => $xml,
> > >                    );
> > >   my $response = $lwp_object->request( $lwp_request );
>
> > > Anyone see what I'm doing wrong?   I've never successfully done an
> > > OAuth GET request.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Contacts API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-contacts-api?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to