免費的新浪云sae服務(wù)器申請和使用(圖)
2021-06-25
1 公眾號準(zhǔn)備
先申請公眾號申請公眾號網(wǎng)頁
由于一般個人訂閱賬號開放功能有限,作為學(xué)習(xí)者,我們不建議使用該賬號的開發(fā)者模式進(jìn)行開發(fā)。相反微信公眾平臺開發(fā) php,申請一個測試帳戶進(jìn)行開發(fā)和學(xué)習(xí)。測試賬號的開通功能基本可以滿足我們的學(xué)習(xí)需求。
默認(rèn)的測試賬號登錄是這樣的
2 服務(wù)器準(zhǔn)備
微信開發(fā)需要有公網(wǎng)IP的服務(wù)器,一般可以使用各種云平臺的服務(wù)器:比如騰訊云、阿里云等,大部分都是收費的。如果你只是體驗一下,你可以使用免費的。新浪云服務(wù)器
2.1 新浪sae服務(wù)器的應(yīng)用和使用(僅支持PHP)2.1.1 創(chuàng)建應(yīng)用
打開官網(wǎng)
注冊或登錄,點擊控制臺->云應(yīng)用SAE,點擊創(chuàng)建應(yīng)用
選擇空間(運行環(huán)境選擇標(biāo)準(zhǔn)環(huán)境,其他需要付費)
2.1.2 代碼管理
在應(yīng)用列表中選擇管理
選擇運行環(huán)境管理、代碼管理、創(chuàng)建新版本
創(chuàng)建完成后可以直接在線編輯代碼并上傳代碼包
2.1.3 接入測試
創(chuàng)建新版本時,默認(rèn)沒有代碼,所以直接訪問的結(jié)果是404
此時可以通過在線編輯或上傳代碼包的方式添加代碼。比如我在線編輯一個.html
保存后訪問
由于目前還沒有實名認(rèn)證,瀏覽器有風(fēng)險提示,但是我們的代碼已經(jīng)生效了。
新浪云用戶中心可進(jìn)行實名認(rèn)證
2.1.4 使用git進(jìn)行代碼控制
新浪云創(chuàng)建新應(yīng)用后,新浪云默認(rèn)為我們創(chuàng)建了一個代碼倉庫,地址:,只需替換成你的二級域名微信公眾平臺開發(fā) php,我們就可以克隆這個代碼倉庫了
示例:
git clone https://git.sinacloud.com/chzchat
cd chzchat
這樣我們就可以在這個目錄下進(jìn)行開發(fā)了。開發(fā)完成后,使用git命令將代碼推送到代碼庫。代碼庫與服務(wù)器相關(guān)聯(lián)。這個操作相當(dāng)于上傳代碼包,但是更方便。 git的使用請參考廖雪峰老師的教程
2.2 騰訊云15天免費云服務(wù)器2.2.1 獲取免費服務(wù)器
接收地址需要先實名認(rèn)證。我這里選擇的操作系統(tǒng)是
激活后,您會在控制臺的通知中收到一條消息,其中包含操作系統(tǒng)的初始密碼,我們可以選擇重置密碼來設(shè)置新密碼
2.2.2 登錄服務(wù)器2.2.3 配置開發(fā)環(huán)境 3 將公眾號與服務(wù)器關(guān)聯(lián)3.1 微信入口文件
在開發(fā)目錄新建微信入口file.php
define('TOKEN','chz');
$signature=$_GET['signature'];
$timestamp=$_GET['timestamp'];
$nonce=$_GET['nonce'];
$echostr=$_GET['echostr'];
$tmpArr=array(TOKEN,$timestamp,$nonce);
sort($tmpArr,SORT_STRING);
// 拼接字符串 sha1加密
$tmpStr=join($tmpArr);
$tmpStr=sha1($tmpStr);
if ($tmpStr==$signature) {
echo $echostr;
}else{
echo "error";
exit;
}
3.2 接口配置信息
上傳代碼到服務(wù)器,配置微信測試賬號界面配置信息
網(wǎng)址填寫:您服務(wù)器的公網(wǎng)IP(或域名)/微信入口文件名
填寫微信入口文件中的定義。如果信息匹配且服務(wù)器已實名驗證,提交后會提示配置成功。
4 微信開發(fā)小demo-微信消息訪問和消息回復(fù)
修改微信入口文件的代碼為
// 加密簽名
$signature=$_GET['signature'];
// 時間戳
$timestamp=$_GET['timestamp'];
// 隨機(jī)出
$nonce=$_GET['nonce'];
// 隨機(jī)字符串
$echostr=$_GET['echostr'];
// TOKEN
define('TOKEN','chz');
// 字典序排序
$tmpArr=array(TOKEN,$timestamp,$nonce);
sort($tmpArr,SORT_STRING);
// 拼接字符串 sha1加密
$tmpStr=join($tmpArr);
$tmpStr=sha1($tmpStr);
// 加密簽名的比較
if ($tmpStr==$signature) {
echo $echostr;
}else{
echo "error";
exit;
}
// 接受xml數(shù)據(jù)
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!$postStr) {
echo "post data error";
exit;
}
$postObj=simplexml_load_string($postStr,'SimpleXMLElement', LIBXML_NOCDATA );
$MsgType=$postObj->MsgType;
switch ($MsgType) {
case 'text':
$Content=$postObj->Content;
switch ($Content) {
case 'hello':
$xml='
%d
';
echo sprintf($xml,$postObj->FromUserName,$postObj->ToUserName,time(),'歡迎關(guān)注');
break;
default:
$xml='
%d
';
echo sprintf($xml,$postObj->FromUserName,$postObj->ToUserName,time(),$postObj->Content);
break;
}
break;
case 'image':
$xml='
%d
';
echo sprintf($xml,$postObj->FromUserName,$postObj->ToUserName,time(),$postObj->MediaId);
break;
default: