php 微博应用--方舟船票
微博小应用 2012,传说中的末日,不管真假,反正我是有诺亚方舟船票了…..围观: http://endworld.sinaapp.com————————— -这是学习微博授权机制写的一个基于sae的小应用,用到了大量的GD函数现在做下简单学习总结1.首先要创建应用,申请appkey新浪微博: http://open.weibo.com腾讯社区: http://opensns.qq.com腾讯微博: http://open.t.qq.com2.创建完应用后,接下来我们下载相关的sdk,这里仅以php为例,注释已经写的很明白新浪微博配置文件:腾讯sdk : 麻花藤的东西很蛋疼,请直接下载文件,都有注释3.一个好的应用最重要的是创意,尽情发挥你的想象方舟船票是毫无新意的模仿,这里只简单介绍下.①首先在 congfig.php 或 appkey.php 中填入申请到的appid 和 appkey,然后配置回调地址.②获取用户信息,根据用户信息,使用php的g d库生成相应图片,生成图片时要注意的地方是:如果用户没有自定义过头像,头像类型是png,否则是jpg.如果是僵尸用户,可能获取不到图像和昵称.③新浪的应用未 上线时,即没通过审核时,只有开发者的账号可以使用应用,其他用户测试只能先在应用管理后台添加测试用户,并且测试用户大于10人才有机会通过审核,这是比较蛋疼的地 方,但审核还是很容易通过的⑤腾讯的应用未上线其他用户也能正常使用,但通过审核比较困难,应用中尽量不要用到非主旋律的词汇4.方舟船票文件说明index.php 首页登录按钮放置页ticket-hall.php 微博回调页,引导用户开始使用ticket.php 生成内容,为发送到微博做好准备toweibo.php 将数据提交到微博suc.php 告知用户成功sdk下载: http://helong.org/download001/weibosdk.7z方舟船票源码: http://helong.org/download001/endworld.7z@王翔宇童鞋的疑问,这里做下说明:程序中涉及到SAE中的storage等特 性,所以只适用与sae......不能直接用于普通空间.......index.php 31行 header('Location: http://endworld.sinaapp.com/qticket-hall.php'); 这是微博回调地址qticket.php 16行,141行可以修改为相对路径,同理,涉及到的图片都可以修改为相对路径,个人代码性格不好,写的是绝对路径ticket.php imagejpeg($i m,SAE_TMP_PATH.'linshi.jpg',100);//读写方式:保存为临时文件,这里SAE_TMP_PATH是SAE中临时文件ticket. php 156行 $s->upload('2012',$userid.'.jpg',SAE_TMP_PATH.'linshi.jpg');//这里用到了S AEstorage见http://apidoc.sinaapp.com/sae/SaeStorage.html#upload有什么需要改进的地方,欢迎童鞋拍 砖交流
新浪微博sdk
<?php session_start(); include_once( 'config.php' ); include_once( 'saetv2.ex.class.php' ); $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION['token']['access_token'] ); //////////// //OAuth授权之后,获取授权用户的UID $uid_get = $c->get_uid(); $uid = $uid_get['uid']; $user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息 ////////////////////// //获取用户发布的微博信息列表 //user_timeline_by_id($uid,$page = 1,$count = 50,$since_id = 0,$max_id = 0,$feature = 0,$trim_user = 0,$base_app = 0) //$page: 页码 ///$count: 每次返回的最大记录数,最多返回200条,默认50。 //$uid: 指定用户UID或微博昵称 //$since_id: 若指定此参数,则只返回ID比since_id大的微博消息(即比since_id发表时间晚的微博消息)。可选。 //$max_id: 若指定此参数,则返回ID小于或等于max_id的提到当前登录用户微博消息。可选。 //$base_app: 是否基于当前应用来获取数据。1为限制本应用微博,0为不做限制。默认为0。 //$feature: 过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。 //$trim_user: 返回值中user信息开关,0:返回完整的user信息、1:user字段仅返回uid,默认为0。 $ms = $c->user_timeline_by_id($uid); // done /////////////////// //获取用户发布的微博信息列表 //user_timeline_by_name ($screen_name,$page = 1,$count = 50,$since_id = 0,$max_id = 0,$feature = 0,$trim_user = 0,$base_app = 0) //$screen_name: 微博昵称,主要是用来区分用户UID跟微博昵称,当二者一样而产生歧义的时候,建议使用该参数 ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>新浪微博V2接口演示程序-Powered by Sina App Engine</title> </head> <body> <?=$user_message['screen_name']?>,您好! <h2 align="left">发送新微博</h2> <form action="" > <input type="text" name="text" style="width:300px" /> <input type="submit" /> </form> <?php /////////////// //发布一条微博信息。 //update ($status,$lat纬度,$long经度,$annotations方便第三方记录数据例如array("a"=>"b", "c"=>"d")) ) if( isset($_REQUEST['text']) ) { $ret = $c->update( $_REQUEST['text'] ); //发送微博 if ( isset($ret['error_code']) && $ret['error_code'] > 0 ) { echo "<p>发送失败,错误:{$ret['error_code']}:{$ret['error']}</p>"; } else { echo "<p>发送成功</p>"; } } ///////////////////////// echo "<br>------发表图片微博----------<br>"; //发表图片微博,图片<5M //$status: 要更新的微博信息。信息内容不超过140个汉字, 为空返回400错误。 //$pic_path: 要发布的图片路径, 支持url。只支持png/jpg/gif三种格式, //$lat: 纬度,发表当前微博所在的地理位置,有效范围 -90.0到+90.0, +表示北纬。可选。 //$long: 可选参数,经度。有效范围-180.0到+180.0, +表示东经。可选 $status='发表图片微博测试测试2012年4月23日14:25:43'; $pic_path='http://www.baidu.com/img/baidu_sylogo1.gif'; $ret13 = $c->upload($status,$pic_path,$lat,$long); if( isset($ret13['error_code']) && $ret13['error_code'] > 0 ) { echo "<p>发表图片微博失败,错误:{$ret7['error_code']}:{$ret7['error']}</p>"; } else { echo "<p>发表图片微博成功</p>"; } //////////////////// echo "<br>--------关注用户--------<br>"; //关注用户 //根据uid关注:follow_by_id ($uid) $ret2 = $c->follow_by_name('tohelong'); if ( isset($ret2['error_code']) && $ret2['error_code'] > 0 ) { echo "<p>关注失败,错误:{$ret2['error_code']}:{$ret2['error']}</p>"; } else { echo "<p>关注成功</p>"; } //////////////// //为当前登录用户添加新的用户标签 echo "<br>---------添加标签-------<br>"; $ret6 = $c->add_tags("tag2,tag3,tag4,标签测试");; if( isset($ret6['error_code']) && $ret6['error_code'] > 0 ) { echo "<p>添加标签失败,错误:{$ret6['error_code']}:{$ret6['error']}</p>"; } else { echo "<p>添加标签成功</p>"; } //////////////////////// echo "<br>--------收藏一条微博--------<br>"; //收藏一条微博信息 $sid='3437771555685532'; $ret7 = $c->add_to_favorites ($sid);//$sid =收藏的微博id if( isset($ret7['error_code']) && $ret7['error_code'] > 0 ) { echo "<p>收藏失败,错误:{$ret7['error_code']}:{$ret7['error']}</p>"; } else { echo "<p>收藏成功</p>"; } /////////////////////// echo "<br>--------互粉列表--------<br>"; //互粉列表 $ret8 = $c-> bilateral ($uid,1,50,0); //print_r($ret8); echo $ret8['users'][0]['location']; ////////////////////// echo "<br>-------表情---------<br>"; $ret9 = $c->emotions ($type = "face",$language = "cnname"); //"face":普通表情,"ani":魔法表情,"cartoon":动漫表情 //print_r($ret9); echo "<img src=".$ret9[3]['url'].">"; ////////////////////// echo "<br>--------评论微博--------<br>"; //对一条微博进行评论 $id='3437771555685532';//帖子id $comment='评论测试测试'; $ret10 = $c->send_comment($id,$comment,$comment_ori=0); //$comment_ori: 当评论转发微博时,是否评论给原微博,0:否、1:是,默认为0 if( isset($ret10['error_code']) && $ret10['error_code'] > 0 ) { echo "<p>评论失败,错误:{$ret7['error_code']}:{$ret7['error']}</p>"; } else { echo "<p>评论成功</p>"; } ///////////////////// echo "<br>--------据帖子id获取微博和作者--------<br>"; //根据ID获取单条微博信息内容 $id='3437771555685532';//帖子id $ret11 = $c->show_status ($id); //print_r($ret11); echo $ret11['text']; echo $ret11['user']['screen_name']; echo $ret11['user']['location']; /////////////////// echo "<br>-------用户名id获取资料和微博---------<br>"; //根据用户UID或昵称获取用户资料.也返回最新微博。 //show_user_by_name ($screen_name) $ret12 = $c->show_user_by_id($uid); //print_r($ret12); echo $ret12['screen_name']; echo "<img src=".$ret12['profile_image_url'].">"; echo $ret12['status']['text']; //////////////////// echo "<br>----------------<br>"; ?> <?php if( is_array( $ms['statuses'] ) ): ?> <?php foreach( $ms['statuses'] as $item ): ?> <div style="padding:10px;margin:5px;border:1px solid #ccc"> <?=$item['id'];?> <?=$item['text'];?><?=$item['source'];?> </div> <?php endforeach; ?> <?php endif; ?> </body> </html>