2010年8月21日星期六

Re: [PerlChina] 请问有没有人使用过perl 来做 sina微博接口的示例啊

请各位大大指导,在新浪微博的oauth,总是出现如下错误;
401 Unauthorized
日志:
 
[DEBUG Net::OAuth] STEP 1: REQUEST SINA OAUTH TOKEN FOR THIS APP
[DEBUG Net::OAuth] Request to_url: http://api.t.sina.com.cn/oauth/request_token?oauth_consumer_key=1438635265&oauth_nonce=1434579439&oauth_signature=c9woVbzjj6bFXWikhduY%2FwMeJG0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1282380286&oauth_version=1.0
[DEBUG Net::OAuth] Got Request Token: ec5165fe718d1869f2edaca3bbad55fa
[DEBUG Net::OAuth] Got Request Token Secret: b70a38b114d841b08d41258c4cc55ca5
[DEBUG Net::OAuth] STEP 2: SINA OAUTH TOKEN RESPONSE
[DEBUG Net::OAuth] RESPONSE: oauth_token=ec5165fe718d1869f2edaca3bbad55fa&oauth_token_secret=b70a38b114d841b08d41258c4cc55ca5
[DEBUG Net::OAuth] STEP 3: REQUEST SINA AUTHORIZATION FOR THIS APP
[DEBUG Net::OAuth] URL : http://api.t.sina.com.cn/oauth/authorize?oauth_token=ec5165fe718d1869f2edaca3bbad55fa&oauth_callback=http%3A%2F%2Fwww.imx.net%2Foauth_sina_call.mpl
[DEBUG Net::OAuth] STEP 4: REQUEST SINA ACCESS TOKEN FOR THIS APP
[DEBUG Net::OAuth] URL: http://api.t.sina.com.cn/oauth/access_token?oauth_consumer_key=1438635265&oauth_nonce=3970420988&oauth_signature=6uaB8lKVQB15b9Yc%2FOO1fne%2FdAU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1282380340&oauth_token=ec5165fe718d1869f2edaca3bbad55fa&oauth_version=1.0&oauth_verifier=713290
 
 
代码
 

 eval { require LWP::UserAgent } or $m->error("LWP::UserAgent module not available.$return_code");
 eval { require Net::SSL } or $m->error("Net::SSL module not available.$return_code");
 eval { require Net::OAuth } or $m->error("Net::OAuth module not available.$return_code");

use Net::OAuth;
use Net::OAuth::Request;
use Net::OAuth::RequestTokenRequest;
use Net::OAuth::AccessTokenRequest;
use Net::OAuth::ProtectedResourceRequest;
#$Net::OAuth::PROTOCOL_VERSION = Net::OAuth::PROTOCOL_VERSION_1_0A;
my $ua = LWP::UserAgent->new;
#use CGI;
#    my $q = new CGI;

    #sub { imxMain::MP ? $m->{apr}->param($_[0]) : $m->{cgi}->param($_[0]) }
    my $token = $cookies->{"token"};
    my $token_secret = $cookies->{"token_secret"};
    my $response_token = $m->paramStr("oauth_token");
   
    my $verifyer = $m->paramStr("oauth_verifier");

my $request = Net::OAuth::AccessTokenRequest->new(
 consumer_key => '*',
 consumer_secret => '*',
 request_url => 'http://api.t.sina.com.cn/oauth/access_token',
 request_method => 'GET',
 signature_method => 'HMAC-SHA1',
 timestamp => time,
 nonce => int(rand(2 ** 32)),
 token => $token,
 token_secret => $token_secret,
);

 $request->sign;

  if (!$request->verify) {
      die "Signature verification failed";
  }
 else {
    my $res = $ua->post($request_url); # Post message to the Service Provider
   
    if ($res->is_success) {

    print STDERR "[DEBUG Net::OAuth] STEP 5: SINA ACCESS TOKEN RESPONSE\n";
    print STDERR "[DEBUG Net::OAuth]\tRESPONSE : " . $res->content . "\n";
    
    print $res->content;

    }
    
    print $res->status_line;
 }

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: