- 论坛徽章:
- 0
|
最近做了一个新浪微博的应用开发,主要是使用NET::OAuth来实现新浪微博的发布
新浪的SDK版本不少,好像缺少perl的,把个人的一点经验分享下
1、需要去获取requset token:
my $request = Net::OAuth->request("request token")->new(
consumer_key =>appkey, #申请应用新浪给的App Key
consumer_secret => appsecret, #申请应用新浪给的App Secret
request_url => request_url,#请求request token的地址 http://api.t.sina.com.cn/oauth/request_token
request_method => 'POST',#方法
signature_method => 'HMAC-SHA1',#签名方法
timestamp => timestamp,#时间戳,我用的time()
nonce => nonce,#生成一个随机的字符串
callback => callback_url,#callback_url 在用户授权后跳转到应用的地址
);
$request->sign;#签名
获取到requset_token后,将requset_token和requset_secret保存,供下一步置换access_token
2、获取获取access_token
my $request = Net::OAuth->request("access token")->new(
consumer_key =>appkey, #申请应用新浪给的App Key
consumer_secret => appsecret, #申请应用新浪给的App Secret
request_url => request_url,#请求Access token的地址 http://api.t.sina.com.cn/oauth/access_token
request_method => 'POST',#方法
signature_method => 'HMAC-SHA1',#签名方法
timestamp => timestamp,#时间戳,我用的time()
nonce => nonce,#生成一个随机的字符串
callback => callback_url,#callback_url 在用户授权后跳转到应用的地址
verifier => verifier,#这个参数会在用户授权后,callback地址里带着,需要接收保存
token =>request_token,#获取的request_token
token_secret=>request_secret,#获取的request_secret
version => 1.0
);
$request->sign;
将获取的access_token access_secret保存,供后续发微博等使用
3、发微博
发送微博时,陷入一个误区,以为按照新浪api里提供的格式就是正确的,结果一直是提示签名无效。
后来一朋友将新浪发微博所提供的内容参数status,放到扩展参数中后,才通过,这个地方折腾了一天多。
my $request =Net::OAuth->request('protected resource')->new(
consumer_key =>appkey, #申请应用新浪给的App Key
consumer_secret => appsecret, #申请应用新浪给的App Secret
token =>request_token,#获取的request_token
token_secret=>request_secret,#获取的request_secret
request_url => request_url,#请求发送微博的地址:http://api.t.sina.com.cn/statuses/update.json 我这使用的是json格式
request_method => 'POST',
signature_method => 'HMAC-SHA1',
timestamp => timestamp,#时间戳,我用的time()
nonce => nonce,#生成一个随机的字符串
version => "1.0",
extra_params => {status => "test weibo"}#扩展参数,需进行uri_escape("test weibo")
);
$request->sign;
之前API中参数太多,看的脑袋大,后发现还是挺有意思的
看有时间能不能封装成一个包,做个perl版的SDK
希望大家批评指正。谢谢 |
|