解决新浪连接(sina-connect)插件无法自动同步微博的问题

刚才把新浪连接(sina-connect)装完之后也没有测试,就发了上一篇文章 WordPress连接新浪微博插件:wp-tsina和sina-connect,结果悲剧了,微博上没有同步更新。

于是找原因,上面要求说WordPress 3.0以上、PHP 5.2以上和支持CURL扩展,看了一下也都没问题。

后来在日志里找到一行:

[24-Oct-2012 07:39:22] PHP Fatal error: the-problem-when-sycn-wordpress-post-to-tsina-via-sina-connectin /home3/shelunet/public_html/wp-content/plugins/sina-connect/sina-connect.php on line 359

打开sina-connect.php 到359行是这样的:

function get_sina_short_url($long_url){
$api_url = ‘http://api.t.sina.com.cn/short_url/shorten.json?source=744243473&url_long=’.$long_url;
$request = new WP_Http;
$result = $request->request( $api_url);
$result = $result[‘body’];
$result = json_decode($result);
return $result[0]->url_short;
}
这行看不出问题来,但是应该是解析取短链接结果时出错了,所以就试了一下在浏览器中输入:

http://api.t.sina.com.cn/short_url/shorten.json?source=744243473&url_long=https://shelu.net/sync-wordpress-to-tsina-wp-tsina-and-sina-connect/

结果得到:

{"request":"/short_url/shorten.json","error_code":"401","error":"40109:consumer_key_refused!"}

看起来是这个AppKey出了问题,这个好办,网上找一个AppKey试试(我就不给具体的key了,可以自己搜一下新浪微博 AppKey,应该能找到一大堆的),结果就是

[{"url_short":"http://t.cn/zluzKQn","url_long":"https://shelu.net/sync-wordpress-to-tsina-wp-tsina-and-sina-connect/","type":0}]

应该就可以了,所以只要把sina-connect.php 354行的那个Source=后面的数字改掉就可以了。

当然最保险的还是自己去申请一个AppKey,那样你可以保证他不会过期,:)

PS: 刚才看到新浪连接下面的评论里头也有好多人说遇到了这个问题。。。希望大家能用我的方法解决

WordPress连接新浪微博插件:wp-tsina和sina-connect

最近其他的社交网站都不太上了,也就是新浪微博每天还会看看,顺便也把自己的文章同步到微博上,就当是打广告了。

原先用的一直是wp-tsina,主要是功能比较单一,用起来也比较简单,但是似乎不太稳定,感觉好像从草稿箱发布post的时候有问题;最近是彻底不行了。网上也没找到什么资料,作者的主页也打不开了,似乎是太监了。

试着自己修复一下,但是没什么有用的信息,只在error_log里头找到一行:

[11-Sep-2012 11:11:04] PHP Warning: session_start() [<a href=’function.session-start’>function.session-start</a>]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and ‘-,’ in /home3/shelunet/public_html/wp-content/plugins/wp-tsina/wp-tsina.php on line 12
但是是9月11日的,可是这插件是10月份还能用,而且后面发Post他没有同步也没有报错,只有放弃了。

在他的源文件夹下有一个connect_issue.txt,上面说:
如果你正在使用sina-connect插件,可能会出现无法登陆的状况。
暂时的解决办法:
打开sina-connect下的sinaOAuth.php,把下面这行:
require_once(‘OAuth.php’);
改为:
if( !class_exists( ‘OAuthToken’ ) ){
require_once(‘OAuth.php’);
}
即可。

新浪连接(sina-connect)我没用,但是既然提到了那我就看看吧,功能比wp-tsina要多一些,不但可以自动同步到新浪微博,也可以让评论者用微博帐号来登录,也可以选择是否同步评论到微博,这功能也还是蛮有意义的,可以提高评论率,先试试看吧,看他是不是稳定。

装完了配置也很简单,安装激活之后,你应该在留言框处可以看到用新浪微博登录的按钮(注意要先退出原来的WordPress登录)。如果没有的话按照说明自己改一下comments.php

Linphone Android 编译

准备搞搞VOIP的业务,看了一下开源的VOIP客户端,觉得Linphone还是不错的,同时提供Android和IPhone客户端,所以决定下源代码编译一下。

我用的是我的T400上32位的CentOS 6虚拟机,首先当然是git下载源代码,不知道是我的无线网卡抽风还是公司的无线路由抽风,反正那几天网不停的掉,每次下载到半路就失败了。看了一下.git文件夹下的config文件,实际上它也是根据这个config文件分submodule递归下载的,所以理论上下载失败之后是可以分submodule下载的,但他是递归的,实在是太麻烦了,而且也容易出问题,放弃。

最后没办法,只好去我自己的服务器上下载,共享主机也没法用yum,不过自己编译安装也不麻烦,后来遇到无法连接的问题,发现是防火墙封了git默认的9418端口,居然连往外访问也封,下班前给HostMonster客服发了个邮件,第二天早上来收到回复说已经打开了。美国的网速就是快啊,几分钟就搞定了,顺带下载了iphone的源代码,然后scp到本地虚拟机上。

后面的准备过程就比较简单了,按照README操作即可。那些依赖库直接yum安装即可,ndk我用的是最新的r8b。prepare_sources过程中还要下载一些东西,网络不好的话也容易出问题,比较大的一个是SILK_SDK_SRC_v1.0.8.zip,可以用工具下载之后放到./submodules/mssilk/sdk/里头。

最后编译的时候报错:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecore.c:49:40: error: expected ‘,’ or ‘;’ before ‘Devel’
jni/..//submodules/linphone/build/android/../../coreapi/linphonecore.c:1519:29: error: expected ‘,’ or ‘;’ before ‘Devel’
主要其实是常量LIBLINPHONE_VERSION没有定义,不知道是版本管理问题还是故意留着让你修改的,看了一下也就这两个地方定义了,所以直接复制一个字符串就行了,我用的是”1.3.2-20120919″

然后是另外一个错误:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c: In function ‘linphone_call_start_audio_stream’:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c:1236:64: error: expected ‘)’ before ‘Devel’
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c: In function ‘linphone_call_start_video_stream’:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c:1334:64: error: expected ‘)’ before ‘Devel’
这回是LINPHONE_RTCP_SDES_TOOL,他用到的LINPHONE_VERSION没定义,直接赋值”Linphone-1.3.2-20120919″了事儿。

后面的就很顺利了,就是稍微有点慢。

有点奇怪的是我第一次编译成功的时候没有缺一些包,包括liblinphone.so等,当时也没报错啊,第二次编译就好了,但是已经不能重现了,不知道为什么会这样。