YamateDD

iPhone开发 web开发

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首先要解释一下,写的这个标题实际上是不准确的。准确的标题应该是,使用新浪SAE(Sina App Engine, http://sae.sina.com.cn )内置PHP的SDK来发送一条微博。这与直接使用开放平台api有什么区别呢?其实说到底就是这个SDK已经将平台的api封装好了,使开发者调用起来更加方便,比如开发平台api发布一条微博的接口是“statuses/update 发布一条微博信息”,发送的形式还是有点别扭,而在SDK中可以用封装好的SaeTClient类的update()方法。弄了很久才觉察出这两个概念的区别,开始时一直混淆了这两种不同开发情况的资料。
好了下面来解释一下大体的步骤(假设读者已经是新浪微博的用户了,如果不是,请先注册):

step1:在http://open.weibo.com/创建应用
(1)点选我是开发者
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
(2)点选创建应用,然后在弹出框里选择站内应用
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
(3)填写应用的一些信息,域名绑定选择否,其他根据自己的情况填写。
(4)填写完成后,系统就会显示应用的汇总信息,其中App Key,和App Secret很重要,可以说就是你这个应用的标识,开发时需要用这个标识。第一步到此就完成了。
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
 
 

 step2:在SAE(Sina App Engine)http://sae.sina.com.cn/创建应用。(这上面创建应用实际就意味着,将我们开发的应用放在SAE上运行,而不需要自己去架设服务器,同时由于这上面集成了新浪开放平台PHP版的SDK,所以开发起来也比较方便。)(这一步由于我现在已经注册过了,可能步骤有一些缺失,但是关键的都在下面)

(1)注册SAE帐号
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
(2)创建新应用。需要说明一下,这个二级域名其实就是访问你应用的地址,注意创建后是不能修改的。创建后好像还需要设置安全密码,安全密码在你编辑代码的时候需要用,所以,一定不要忘了哦。
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
 创建应用成功后点击如下的超链接,就可进入应用的汇总信息
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
 应用汇总信息:这里有access key 和 secret key ,暂时用不到,还不清楚有什么用。
 
 PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
(3)创建应用的代码。也就是准备开始敲代码了在上图左边导航栏,点击代码管理,然后点击“通过这里创建一个版本”,在弹出框中输入版本号1.
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
 

(4) 编辑代码。创建成功后显示如下,点击编辑代码

PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
显示如下,现在可以自己通过左上角的两个按钮新建文件和文件夹了。
 PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
至于代码部分,我主要是参考下面的博客http://www.html-js.com/?p=1163,特别是关于身份认证,说得比较详细,我就不累述了。我在他的源码基础上做了一些小修改,以便能正常运行。下面是我的运行代码:
 
 
getRequestToken.php
<?php
session_start();
include ('saet.ex.class.php');
$auth=new SaeTOAuth("这里替换成你的App Key","这里替换成你的app secret");//your app key and app secret
//这一步是去sina服务器请求request token
$token=$auth->getRequestToken();
//这一步是用request token拼装认证的url,第三个参数是获得用户认证许可后跳转到的url。就是我们在SAE注册应用的二级域名
$url=$auth->getAuthorizeURL($token,true,"这里替换成你SAE应用的二级域名/getAccessToken.php");
$_SESSION['token']=$token['oauth_token'];//记录下来备用
$_SESSION['token_secret']=$token['oauth_token_secret'];
 
//最后将$url当成一个链接输出到页面中,用户点击了这个链接就会跳转到认证页面
echo "<a href=$url>welcome,madada!</a>";
?>
 
getAccessToken.php
<?php
session_start();
include ('saet.ex.class.php');
//利用第一步获得的request token和token secret来初始化SaeTOAuth对象
$auth=new SaeTOAuth("这里替换成你的App Key","这里替换成你的app secret",$_SESSION['token'],$_SESSION['token_secret']);
//去换取真正有用的access token
$accessToken=$auth->getAccessToken($_REQUEST['oauth_verifier'],$_REQUEST['oauth_token']);
//print_r($accessToken);
//存储起来,后面每次请求都要带上这两个值
$_SESSION['token']=$accessToken['oauth_token'];
$_SESSION['token_secret']=$accessToken['oauth_token_secret'];
//接下来你就可以跳转到你的应用页面开始微博之旅了,例如输出一句js,window.location.href="send.php"
//echo "token:".$_SESSION['token'];
//echo "<br/>token_secret:".$_SESSION['token_secret']."<br/>";
echo "<script>window.location.href='send.php'</script>"
?>
 
 
send.php
<?php
session_start();
//include ('saetv2.ex.class.php');
include ('saet.ex.class.php');
$auth = new SaeTClient("这里替换成你的App Key","这里替换成你的app secret", $_SESSION['token'], $_SESSION['token_secret']);
$mes = $_POST[msg];
 $auth->update($mes);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
</head>
<body>
  <form method="POST">
  要发送的微博:<input type="text" name="msg">
        <input type="submit" value="提交">
  </form>
</body>
</html>
 
 至此代码就完成。
 
 
 step3:在新浪开发平台配置应用。回到step1中,点击左边导航栏的编辑属性,然后点击右上方的应用页面进行配置。
站内应用地址就是你要在浏览器中输入的地址,通过这个地址,你就可以访问到你存放在sae上的应用了(比我们现在的应用是发送一条微博)。而实际应用地址就是你SAE上的那个二级域名。填写完成后,就大功告成了。
PHP调用新浪微博开放平台api发送微博实例 - 子其 - 子其的博客
 
 
step4:访问应用:发送一条微博。在浏览器中输入你的站内应用的地址+“/getRequestToken.php”,如http://apps.weibo.com/你的应用的名称/getRequestToken.php)不能直接去访问send.php文件,因为涉及到授权。(如果在同个浏览器已经登录微博,可以直接授权,不然会提示用户先登录),然后在输入框中填写你要发送的信息,然后点击提交。打开自己的微博,刷新一下,就能看见自己通过该应用发送的微博了(注意:有时候可能会延迟一两分钟才能刷出来)。
 
 
最后一点小心得:可以在http://sae.sina.com.cn/?m=devcenter&catId=13文档中心查看SDK封装好的各种方法,调用的形式都大同小异。
posted on 2012-11-01 11:48  YamateDD  阅读(3718)  评论(0编辑  收藏  举报