《公众平台开发最佳实践》——2.1 新浪SAE应⽤ 本节书摘来⾃华章出版社《公众平台开发最佳实践》⼀ 书中的第2章,第2.1节,作者李骏 边思,更多章节内容可以访问云栖社区“华章计算机”查看。
2.1 新浪SAE应⽤
Sina App Engine(以下简称SAE)是新浪研发中⼼于2009年8⽉开始内部开发,并在2009年11⽉3⽇正式推出第⼀个Alpha版本的国内⾸个公有云计算平台,SAE是新浪云计算战略的核⼼组成部分。
SAE作为国内的公有云计算,从开发伊始借鉴吸纳Google、Amazon等国外公司的公有云计算的成功技术经验,并很快推出不同于他们的具有⾃⾝特⾊的云计算平台。SAE选择在国内流⾏最⼴的Web开发语⾔PHP作为⾸选⽀持语⾔,Web开发者可以在Linux/Mac/Windows 上通过SVN或者Web版在线代码编辑器进⾏开发、部署、调试,团队开发时还可以进⾏成员协作,不同的⾓⾊将对代码、项⽬拥有不同的权限;SAE提供了⼀系列分布式计算、存储服务供开发者使⽤,包括分布式⽂件存储、分布式数据库集、分布式缓存、分布式定时服务等,这些服务将⼤⼤降低开发者的开发成本。同时SAE整体架构的⾼可靠性和新浪的品牌保证⼤⼤降低了开发者的运营风险。另外,作为典型的云计算,SAE采⽤“所付即所⽤,所付仅所⽤”的计费理念,通过⽇志和统计中⼼精确地计算每个应⽤的资源消耗(包括CPU、内存、磁盘等)。 总之,SAE就是简单⾼效的分布式Web服务开发、运⾏平台。
智能开关方案SAE的注册地址为:/?m=user&a=reg,在浏览器中输⼊该⽹址,将⾃动跳转到“SAE新浪云计算平台”在新浪微博的应⽤授权界⾯,如图2-1所⽰。
棉絮加工如果你还没有新浪微博账号,需要新注册⼀个,注册新浪微博账号的过程本书就不再介绍了。在图2-1中填写新浪微博账号及密码之后,单击“登录”按钮,将跳转到授权确认页⾯,如图2-2所⽰。 单击“授权”按钮,跳转到SAE的⽤户注册页⾯,如图2-3所⽰。
填写真实姓名、安全邮箱、安全密码、确认密码、绑定⼿机及验证码之后,单击“下⼀步”按钮,将跳转到⼿机号验证页⾯,如图2-4所⽰。
填写⼿机收到的短信验证码后,单击“验证⼿机”按钮,将提⽰注册成功。
这样,我们成功注册了SAE的账号。
2.1.2 创建新浪云应⽤
使⽤注册成功的微博账号登录SAE,登录后界⾯如图2-5所⽰。
如图2-6所⽰,在最上⽅右侧的导航列表中,单击“我的应⽤”链接,再从下拉列表中选择“应⽤列表”链接,将跳转到“应⽤列表”页⾯。
单击页⾯中的“创建新应⽤”按钮,这时会弹出提⽰框,提⽰禁⽌放置违法违规内容,单击“继续创建”按钮,弹出创建应⽤页⾯,如图2-7所⽰。
在应⽤创建页⾯中,依次填写⼆级域名(App name)、应⽤名称、验证码,开发语⾔选择“PHP”,应⽤类型单击“PHP空应⽤”。如果⼆级域名(App name)已经被其他⼈注册过,会提⽰已经被占⽤,需要重新选择填⼊。填写完毕后,单击“创建应⽤”按钮,将提⽰创建成功,如图2-8所⽰。
应⽤创建成功之后,会⾃动跳转到应⽤列表,在应⽤列表中可以看到已经创建的应⽤。
2.1.3 创建应⽤版本
在应⽤列表中,单击刚才创建的应⽤cctv15将进⼊应⽤信息页⾯,如图2-9所⽰。
如图2-10所⽰,到左侧⽬录下的“应⽤管理”,再单击下⾯的“代码管理”链接,将跳转到代码管理页⾯。
包装箱制作单击右侧的“创建⼀个版本”按钮,将弹出创建版本页⾯,如图2-11所⽰。
版本号默认为1,可以不⽤更改,直接单击“创建”按钮,这时会弹出安全密码输⼊框,正确输⼊安全密码之后,如图2-12所⽰。
⾄此,就成功创建了⼀个域名URL为/的SAE应⽤了。这个URL将会在后⾯⽤到。
2.1.4 上传接⼝代码
下述代码是⼀个可以启⽤接⼝的代码。
<?php
/*
⽅倍⼯作室 /
CopyRight 2013 All Rights Reserved
*/
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);rgd-208
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
<FuncFlag>0</FuncFlag>
</xml>";
if($keyword == "?" || $keyword == "?")
{
$msgType = "text";
$content = date("Y-m-d H:i:s",time());
$result = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $content);
echo $result;
}
}else{
echo "";
exit;
}
}
}
>```
将代码保存到⽂件index.php。请注意必须使⽤专业的开发软件来保存操作,例如Notepad++,不要使⽤Windows⾃带的记事本等,保存时需设置格式为“UTF-8⽆BOM 然后使⽤压缩软件WinRAR将其压缩成ZIP格式,注意不能⽤RAR格式,因为SAE不⽀持RAR格式的⽂件上传,如图2-14所⽰。
<div ><img src="/a4cdac67dd73047c4b25e244811e88b6615add6e.png" width="" height="">
</div>
这样就会⽣成⼀个index.zip的压缩⽂件。
再回到我们之前创建的SAE应⽤的代码管理界⾯中,单击“操作”按钮,选择在下拉按钮中,再选择“上传代码包”按钮,如图2-15所⽰。
<div ><img src="/5ac830721c2f2ce0c4e028339020fd9f8bab236d.png" width="" height="">
</div>
机组式柔印机选择上传代码包后,将弹出“代码上传”页⾯,单击“上传⽂件”按钮,选择刚才压缩好的index.zip⽂件,单击上传,上传成功后进度条的背景⾊为绿⾊,如图2-16所⽰。
<div ><img src="/053f052af98d697515aefc31cf9ab4565aa73c2a.png" width="" height="">
</div>
再次回到代码管理界⾯中,单击“编辑代码”按钮,如图2-17所⽰。
一次性台布<div ><img src="/0d7bcfe19fcba3c1d2009c38516d21bec3fb9a2b.png" width="" height="">
</div>
在新的代码编辑页⾯中,我们可以看到index.php已经上传成功,双击该⽂件可以查看到源代码,如图2-18所⽰。
<div ><img src="/91db97ca8be9eef0ce6931eeea5d2c18384a37f2.png" width="" height="">
</div>
⾄此,新浪云应⽤的创建完成,并且成功上传了公众平台的接⼝⽂件。
####2.1.5 申请SAE中级认证