diff --git a/README.md b/README.md new file mode 100644 index 0000000..03eb3e9 --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ + +================= + +用于新浪微博开放平台的PHP SDK. 内含能直接使用的DEMO. + +SAE(Sina App Engine, http://sae.sina.com.cn )已内置SDK,不需要下载,使用前需要手工调用 require_once('saetv2.ex.class.php'); + +composer +----- +composer.phar require xiaosier/libweibo:dev-master + +更新 +----- + ++ 2013年2月20日 修改V2版一处notice ++ 2011年12月16日 修改V2版两处手误 ++ 2011年10月21日 发布V2版PHP SDK,基于 http://open.weibo.com/wiki/API%E6%96%87%E6%A1%A3_V2 中的最新接口封装。 ++ 2011年6月16日 发布OAuth2版PHP SDK,删除Basic认证的SDK(微博开放平台已不支持Basic认证) ++ 2010年11月17日 修改了demo程序默认callback url在某些访问方式下不正确的问题. ++ 2010年6月29日Basic认证版本&OAuth版本添加verify_credentials函数,用于获取当前用户信息,OAuth添加update_avatar更新头像 ++ 2010年5月5日 Basic 认证版本添加图片发布支持 ++ 2010年5月12日 OAuth 认证版本添加图片支持 + +说明 +----- +**Demo演示地址** + ++ V2版Demo: http://weibosdk.sinaapp.com/ ++ 站内应用Demo: http://apps.weibo.com/weibosdk ++ OAuth版Demo: http://saettest.sinaapp.com/ + +**如何申请API Key** + +你需要有一个新浪微博开放平台的API Key.这里申请: http://open.weibo.com + +**关于Class的功能** + ++ 基于OAuth认证. ++ 完成至2011年10月21日止,全部接口的封装 + +**新浪微博V2版PHPSDK Demo使用教程** + ++ 1.在open.weibo.com创建应用,得到API KEY,设置“授权设置”中的“应用回调页”地址为"http://host/callback.php",其中host为网站域名。 ++ 2.下载Demo,然后解压,修改config.php中的WB_AKEY为App Key,WB_SKEY为App Secret,WB_CALLBACK_URL为刚才填入的回调页地址。 ++ 3.上传到PHP空间即可 + +**新浪微博站内应用Demo使用教程** ++ 1.在open.weibo.com创建站内应用,得到API KEY ++ 2.编辑应用属性,设置"应用页面"中的“站内应用地址” ++ 3.下载,解压,修改config.php中的WB_AKEY为App Key,WB_SKEY为App Secret,CANVAS_PAGE为“应用页面”中设置的”站内应用地址“ ++ 4.上传代码到PHP空间 ++ 5.编辑应用属性,设置"应用页面"中的"应用实际地址"为刚刚上传代码的apps.php的地址,比如:"http://xxxxx.sinaapp.com/apps.php",设置“Iframe高度“为2000px。 ++ 6.访问刚刚设置的“站内应用地址”即可。 + +**OAuth版Demo使用教程** ++ 1.在open.weibo.com创建应用,得到API KEY ++ 2.下载,然后解压,修改config.php中的WB_AKEY为App Key,WB_SKEY为App Secret。 ++ 3.上传到PHP空间即可 + + +Bug tracker +----------- + +Have a bug? Please create an issue here on GitHub! + +https://github.com/xiaosier/libweibo/issues + + +Authors +------- + ++ http://weibo.com/lazypeople ++ http://lazy.changes.com.cn + + +License +--------------------- + +Copyright 2011 SINA, Inc. +Copyright 2011 SAE + +Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..c19203f --- /dev/null +++ b/composer.json @@ -0,0 +1,22 @@ +{ + "name": "xiaosier/libweibo", + "type": "library", + "description": "PHP sdk for Weibo open platform", + "keywords": ["sdk","weibo"], + "homepage": "http://github.com/xiaosier/libweibo", + "license": "MIT", + "authors": [ + { + "name": "lazypeople", + "email": "hfutming@gmail.com", + "homepage": "http://lazy.changes.com.cn", + "role": "Developer" + } + ], + "require": { + "php": ">=5.0.0" + }, + "autoload": { + "files": ["saetv2.ex.class.php"] + } +} \ No newline at end of file diff --git a/saetv2.ex.class.php b/saetv2.ex.class.php index 890a700..43e6852 100644 --- a/saetv2.ex.class.php +++ b/saetv2.ex.class.php @@ -354,7 +354,11 @@ function http($url, $method, $postfields = NULL, $headers = array()) { curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ci, CURLOPT_ENCODING, ""); curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer); - curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 1); + if (version_compare(phpversion(), '5.4.0', '<')) { + curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 1); + } else { + curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 2); + } curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader')); curl_setopt($ci, CURLOPT_HEADER, FALSE); @@ -600,7 +604,7 @@ function home_timeline( $page = 1, $count = 50, $since_id = 0, $max_id = 0, $bas */ function friends_timeline( $page = 1, $count = 50, $since_id = 0, $max_id = 0, $base_app = 0, $feature = 0 ) { - return $this->home_timeline( $since_id, $max_id, $count, $page, $base_app, $feature); + return $this->home_timeline($page, $count, $since_id, $max_id, $base_app, $feature); } /** @@ -1114,15 +1118,38 @@ function upload( $status, $pic_path, $lat = NULL, $long = NULL ) * 对应API:{@link http://open.weibo.com/wiki/2/statuses/upload_url_text statuses/upload_url_text} * * @param string $status 要发布的微博文本内容,内容不超过140个汉字。 + * @param int $visible 微博的可见性,0:所有人能看,1:仅自己可见,2:密友可见,3:指定分组可见,默认为0 + * @param string $list_id 微博的保护投递指定分组ID,只有当visible参数为3时生效且必选。 + * @param string $pic_id 已经上传的图片pid,多个时使用英文半角逗号符分隔,最多不超过9个。 + * @param float $lat 纬度,有效范围:-90.0到+90.0,+表示北纬,默认为0.0。 + * @param float $long 经度,有效范围:-180.0到+180.0,+表示东经,默认为0.0。 + * @param string $annotations 元数据,主要是为了方便第三方应用记录一些适合于自己使用的信息,每条微博可以包含一个或者多个元数据, + * 必须以json字串的形式提交,字串长度不超过512个字符,具体内容可以自定。 * @param string $url 图片的URL地址,必须以http开头。 * @return array */ - function upload_url_text( $status, $url ) + function upload_url_text( $status, $url , $visible=0, $list_id=NULL, $pic_id=NULL, $lat = NULL, $long=NULL, $annotations=NULL) { $params = array(); $params['status'] = $status; $params['url'] = $url; - return $this->oauth->post( 'statuses/upload', $params, true ); + $params['visible'] = $visible; + if (!is_null($list_id)) { + $params['list_id'] = $list_id; + } + if (!is_null($pic_id)) { + $params['pic_id'] = $pic_id; + } + if (!is_null($lat)) { + $params['lat'] = $lat; + } + if (!is_null($long)) { + $params['long'] = $long; + } + if (!is_null($annotations)) { + $params['annotations'] = $annotations; + } + return $this->oauth->post( 'statuses/upload_url_text', $params, true ); } @@ -1447,26 +1474,6 @@ function show_user_by_name( $screen_name ) return $this->oauth->get( 'users/show', $params ); } - - - /** - * 根据长链接获取短链 - * - * 根据长链接获取短链返地址。 - *
对应API:{@link http://open.weibo.com/wiki/2/short_url/shorten} - * - * @access public - * @param string $url 长链接地址。 - * @return array - */ - function get_short_url( $url ) - { - $params=array(); - if ( $url !== NULL ) { - $params['url_long'] = $url; - } - return $this->oauth->get( 'short_url/shorten', $params); - } /** * 通过个性化域名获取用户资料以及用户最新的一条微博 @@ -2494,7 +2501,7 @@ function update_profile_image( $image_path ) $params = array(); $params['image'] = "@{$image_path}"; - return $this->oauth->post('account/avatar/upload', $params); + return $this->oauth->post('account/avatar/upload', $params, true); } /**