微博/SNS同步状态发送工具
2010-12-06 11:09 by hackerzhou写过几篇关于使用php的curl将状态发送到一些SNS以及微博系统的文章,有兴趣的朋友可以翻阅文章末尾的链接。这几天就想把这些函数级别的东西通过一个应用的形式整合起来,使得更加实用且模块化程度更加高。使用了php中function_exists以及runtime call函数的功能来简化了一些函数调用,使得自动绑定handler成为可能。目前有五个服务没有提供,等有时间我会出第二版来实现新功能,大家提的关于UI的修改意见也会在第二版中得到体现。
源代码已放到SVN上:http://hackerzhou.googlecode.com/svn/trunk/PHP/StatusPublishTools/ 主要分php和flex两部分,大家可以下载下来自定义或者直接拿来用。
注意:由于腾讯微博的加密方法比较诡异,为了简化代码,直接使用了腾讯js的加密脚本,修改qq_weibo_password下的index.html中的document.write(md5_3(‘##your password##’));,将你的密码填进去,随后打开改网页生成加密了的密码。在页面配置的时候输入这个加密的密码。
一段比较关键的分派发状态任务的Code如下:
function send($method,$title,$message,&$settings,$disable){ foreach($settings as $key => $value){ if((strstr($key,"_Enable") !== false) && ($value == "true")){ $serviceName = str_replace("_Enable","",$key); if(strstr($disable,$serviceName) === false){ callFunctionWrapper($serviceName, $settings,$message); } } } } function callFunctionWrapper($serviceName,&$settings,$message){ callFunction("update".$serviceName,$message,$settings[$serviceName."_Username"] ,base64_decode($settings[$serviceName."_Password"]),0); } function callFunction($foo,$arg0,$arg1,$arg3,$arg4){ if(function_exists($foo)){ $foo($arg0,$arg1,$arg3,$arg4); } }
$settings是一个Array,里面储存了每个服务对应的XXX_Enable,XXX_Username,XXX_Password等属性,则每次只需要遍历这个Array,然后寻找XXX_Enable是true的项,随后调用updateXXX函数来发布对应的状态。php这种在runtime决定函数调用的功能类似于Java/.Net里的反射,能简化一些操作,不过过于依赖runtime决定也带来一定的性能问题,在这个应用中没有考虑性能这方面的影响。
if(length > 1){ for(var i:int=0;i<length;i++){ var o:Object=new Object(); o.Name=a.Item[i].Name; enableServiceDataArray.addItem(o); } }else if(length == 1){ var o1:Object=new Object(); o1.Name=a.Item.Name; enableServiceDataArray.addItem(o1); }
2013-03-25 10:43
你这个不是用的oauth2, 如果想发图片怎么办?
2013-03-25 17:24
当时做的就是一个简单的版本就没有用oauth,而且那时候并不是每个都支持oauth认证的啊
2011-08-26 16:06
现在怎么下载不了了啊?
2011-09-01 08:08
之前SVN server清理过一次,我重新把项目放进来了,现在可以访问了。
2011-01-28 14:55
最近在弄这方面的东西,沙发围观。。。。。
2011-01-28 16:49
挺简单的,都是一堆curl,等有空了写一个java版的,在GAE上跑