net :: oauth :: Simple make_restricted_request에서 연락처 검색하기
-
23-12-2019 - |
문제
나는 공인 된 토큰을 얻고 make_restricted_request에서 결과를 얻을 수 있지만 결과를 해석 할 수는 없습니다.그들은 모두처럼 - 13T01 : 26 : 56.834zhttp : //www.google.com/m8/feeds/contacts/useremail/base/12010-01-
그러나 실제 결과 인 것 같습니다. 아래의 요청에 내가 제공하는 '최대 결과'값만큼 정확히 많은 결과가 있습니다.
package Net::AppThatUsesOAuth;
use strict;
use base qw(Net::OAuth::Simple);
sub new {
my $class = shift;
my %tokens = @_;
return $class->SUPER::new( tokens => \%tokens,
protocol_version => '1.0a',
urls => {
request_token_url => "https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.google.com/m8/feeds/",
authorization_url => "https://www.google.com/accounts/OAuthAuthorizeToken",
access_token_url => "https://www.google.com/accounts/OAuthGetAccessToken",
});
}
sub view_restricted_resource {
my $self = shift;
my $url= 'https://www.google.com/m8/feeds/contacts/default/full' ;
return $self->make_restricted_request($url, 'GET', 'max-results' => 100 );
}
package main;
use CGI;
use Data::Dumper;
my $cgi = new CGI;
print $cgi->header(-charset => 'utf-8');
my $app = Net::AppThatUsesOAuth->new(%tokens);
if ($app->authorized) {
my $response = $app->view_restricted_resource;
print "Restricted resource = ".(Dumper $response)."\n";
}
exit;
.
출력은 다음과 같습니다 :
$ var1= 축복 ({ '_protocol'=> 'http / 1.1', 'useremail2014-02.2.52.254-27T02 : 15 : 52.254zusernameUserEmailContacts10361100HTTP : //www.google.com/m8/feeds/contacts/useremail/base/02012-04-13t01:26:56.834zhttp://www.google.com/m8/feeds/contacts/useremail/base/12010-01-21t19:32:41.739zhttp://www.google..com / m8 / 피드 / 연락처 / useremail / base / 22008-04-09t08 : 47 : 53.076zhttp : //www.google.com/m8/feeds/contacts/useremail/base/32010-01-21T19 : 32 :41.739ZHTTP : //www.google.com/m8/feeds/contacts/useremail/base/42008-04- ...
해결책
$response
에서 반환 된 make_restricted_request
는 HTTP::Response
객체입니다.Net::OAuth::Simple
는 이미 요청이 성공했는지 여부를 확인하므로 $response->content
또는 $response->decoded_content
를 사용하여 응답의 내용에 액세스 할 수 있습니다.