最近在研究各种api,本来要先搞人人的api,但人人的各种申请太繁琐了,.NET的skd很好用,代码写的很简单,但是php的那份死活调不通,作者也已经好几个月没有更新过了,同时有几个特别想测试的api偏偏需要申请,你说这学习研究阶段,懒的去申请,所以就暂缓搞人人的api了。这两天在新浪云里面整了个应用,顺便了解下新浪的api。
首先,需要注册新浪开发者账户,http://open.weibo.com/,当然可以使用新浪微博登录,不过对账户信息有限制,很简单,通过邮箱认证下即可。(今天很奇怪,新浪的认证用不了网易的163邮箱,估计这俩公司又闹起来了,呵呵,qq的倒能用)。
然后要创建一个新应用,一共有三种形式的应用:
- 站内应用
- 就是创建站点,说是站内应用,其实从站外也可以访问的;
- 可以从应用设置中设置站内访问地址,和实际地址,这跟非死不可一样,就是在app页面中用iframe中嵌套的那个页面;
- 安全设置中可以选择是否限定域名,如果不限定域名,那么你可以用这个appkey和secret key做很多网站,学习测试最好不要限制,如果运营最好要做限制。
- 客户端
- 可以开发客户端。
- 其他
- 浏览器插件什么的。
我们创建的自然应该是站内应用了,设置还算比较简单。新浪的开发文档看起来很简单,至少比非死不可的简单多了:
http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5
它的php sdk在这里:
http://code.google.com/p/libweibo/
直接就有介绍,看着不错,下载了一份放到apache的htdocs目录,然后按照介绍中写的进行操作。
有问题了,说明里面有:
CANVAS_PAGE为“应用页面”中设置的”站内应用地址“
这个说法,但config.php中并不包含这部分,算了,不管了,估计用不着。但运行的时候却出错了。
错误1: Notice: Undefined index: SCRIPT_URI in D:Apache2.2htdocssinaappindex.php on line 13
这个错误仅仅是个提示,但他会影响到认证成功后返回的路径。网上也有很多人问该问题,有人说要启用apache的mod_rewrite模块,但我试过了,启用似乎不解决问题,也有人说需要启用php的php_curl扩展,我查了,我也启用了。问题的出处是访问$_SERVER[‘SCRIPT_URI’]这个值的时候,访问不到,而许多人也说SCRIPT_URI并不是内置的。最终也没有查到,不知道作者是不是启用了其他不常用的扩展或者模块,但是我们可以自己来处理:在访问前定义下:$_SERVER[‘SCRIPT_URI’]=‘http://yoururl’,就可以了。
错误2:乱码
认证成功后,页面上全是乱码,用记事本把所有的php文件另存为utf8,windows的(似乎作者上传的是linux下编写的php,但是问题仍旧很奇怪)
错误3:浏览器兼容性
这个还不知道是怎么回事,反正用chrome浏览器打开后,运行是不正常的,换firefox下可正常使用,这个实在奇怪,服务器端的代码,难道还挑客户端的浏览器?
好了,今天先写到这里吧。对这些问题有研究的朋友,不妨告知。