在 STEP 3 里要,把这个 URL 拿给用户验证。 用户验证成功成功会访问 oauth_callback 中的地址, 并把 token 传到 oauth_callback 中的地址里。
在 2010年8月21日 下午4:58,imxae <[email protected]> 写道: > 请各位大大指导,在新浪微博的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 讨论组"论坛。 > 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 > 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 > 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 > -- http://weizhicheng.users.sourceforge.net/blog/ -- 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
