免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8326 | 回复: 16

perl调用NET::OAuth发送新浪微博 [复制链接]

论坛徽章:
0
发表于 2011-06-29 11:19 |显示全部楼层
最近做了一个新浪微博的应用开发,主要是使用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

希望大家批评指正。谢谢

论坛徽章:
0
发表于 2011-06-29 11:31 |显示全部楼层
这样啊

论坛徽章:
0
发表于 2011-06-29 12:55 |显示全部楼层
不错 可以参考 可以封装做个SDK包

论坛徽章:
0
发表于 2011-06-29 15:02 |显示全部楼层
支持~

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
发表于 2011-06-29 18:27 |显示全部楼层
关注。

论坛徽章:
0
发表于 2011-06-30 10:44 |显示全部楼层
最近做了一个新浪微博的应用开发,主要是使用NET::OAuth来实现新浪微博的发布

新浪的SDK版本不少,好像缺 ...
yangzh1985 发表于 2011-06-29 11:19



    膜拜

论坛徽章:
0
发表于 2012-08-28 19:40 |显示全部楼层
哈哈 对这个有兴趣
有没有下文阿

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
发表于 2012-08-28 19:41 |显示全部楼层
学习学习

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2012-08-29 08:30 |显示全部楼层
yangzh1985 发表于 2011-06-29 11:19
最近做了一个新浪微博的应用开发,主要是使用NET::OAuth来实现新浪微博的发布

新浪的SDK版本不少,好像缺 ...


分享有价值的代码,永远都值得鼓励。

可惜我不是版主,不然一定给你加精。

论坛徽章:
0
发表于 2012-08-29 11:01 |显示全部楼层
py 发表于 2012-08-29 08:30
分享有价值的代码,永远都值得鼓励。

可惜我不是版主,不然一定给你加精。


支持你的建议。再说这也是学习OAuth的例子。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP