微信公眾號開發——伺服器配置及token驗證
[前言]:因為自己第一次配置開發者模式是2015年底,當時是SAE的應用,現在申請了一個阿里雲的伺服器,根據官方文件嘗試一晚上無果,自己又找資料成功完成啟用微信公眾號後臺開發者模式的伺服器設定。
一、前提
1、購買一臺雲伺服器
必須要有公網IP,可以沒有域名,我選擇安裝的是CentOS 7.5的系統。(這裡我是用的最後一個月的學生優惠9.9買了臺阿里雲玩玩);
2、配置安全組
新增一條可以訪問80埠的安全規則。
3、遠端連線
(1)在阿里雲的管理平臺上直接登入
使用者名稱預設root
密碼是購買的時候設定的使用者密碼,忘記的話可以在控制檯重置密碼。
(2)使用Xshell、SecureCRT、Putty等軟體遠端登入
這裡推薦使用Xshell,使用者名稱密碼同上。
4、搭建服務
以下是遠端登入後,在命令列中操作。全部在命令列中操作完成的。
(1)安裝python2.7以上版本
CentOS7.2自帶python2.7.5,readline-devel 如果沒有安裝的話,會造成進入python直譯器上下左右回退鍵都輸入不正常。
yum install -y readline-devel
如果缺少openssl-devel的話,訪問https會無法工作。
yum install -y openssl-devel
下載
cd /tmp
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
解壓縮
tar -xJvf Python-2.7.12.tar.xz
編譯
cd Python-2.7.12/
./configure --prefix=/usr/local/python2.7
make
make install
連結
ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin/python
由於系統自帶的python路徑是/usr/bin/python。PATH中,/usr/local/bin比/usr/bin靠前,所以當你輸入python,系統會自動啟動你安裝的python2.7.12。
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
在python指令碼中,你可以使用env來搜尋python
#!/bin/env python
這樣,CentOS7.2呼叫的也是你安裝的2.7.12。好處是當你在別的環境裡執行,不需要改第一行也能執行。當然你也可以使用絕對路徑:
#!/usr/local/bin/python
這樣當在別的環境中執行,你需要用sed把第一行的路徑替換下。
(2)安裝web.py
先安裝 easy install:
yum install python-setuptools
安裝完成,輸入:
easy_install web.py
(3)安裝libxml2, libxslt, lxml python
yum install libxml2
yum install libxslt
yum install lxml python
(4)編輯程式碼,如果不懂python 語法,請到python官方文件查詢說明。
vim main.py
點選“i”,進入編輯模式,輸入以下程式碼:
# -*- coding: utf-8 -*- # filename: main.py import web urls = ( '/wx', 'Handle', ) class Handle(object): def GET(self): return "hello, this is a test" if __name__ == '__main__': app = web.application(urls, globals()) app.run()
點選“ESC”,退出編輯模式,輸入“:wq”,退出編輯器並儲存。
(5)開啟服務
如果出現“socket.error: No socket could be created“錯誤資訊,可能為80埠號被佔用,可能是沒有許可權,請自行查詢解決辦法。如果遇見其他錯誤資訊,請到web.py官方文件,學習webpy 框架3執行命令:
sudo python main.py 80
(6)測試
在瀏覽器輸入http://外網IP:80/wx,可以看到類似於如下的頁面:
這表明一個簡單的web應用已搭建完成。
5、部署LAMP
即Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,
參考阿里雲官方文件:
https://help.aliyun.com/document_detail/50774.html?spm=5176.doc52954.6.722.t92kLG
完成LAMP的部署;
6、修改index.php
程式碼參考官方文件:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
如下:
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$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>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
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;
}
}
}
?>
其中:define("TOKEN", "weixin");
第7行是使用者定義的“token”,需要與下面將會提及的令牌(Token)相同。
安裝Linux/Unix同Windows進行ZModem檔案傳輸的命令列工具:
yum install lrzsz
完成後在命令列中輸入“rz”,選擇本地檔案並上傳。
想要刪除檔案輸入:
rm -f 檔名
從伺服器下載檔案的命令是:
sz 檔名
我在使用putty的時候rz一直無法完成上傳,換用Xshell順利解決。二、公眾號開發資訊
1、啟用開發者密碼(AppSecret)
直接掃碼完成驗證,開啟後儲存好密碼即可。
2、IP白名單
三、伺服器配置
填寫完畢後,提交即可完成伺服器配置的啟用。
相關文章
- 微信公眾號開發教程(一) 驗證接入
- Laravel 配置微信公眾平臺驗證 token 失敗Laravel
- 配置微信公眾號,token錯誤解決
- 微信公眾號開發
- 微信公眾號開發(一)基礎配置
- ThinkJS 接入微信公眾平臺 1 —— Token 伺服器驗證JS伺服器
- 微信公眾號開發-分享
- .net開發微信公眾號
- 微信開發之公眾號
- 開發微信公眾號基本配置引數錯誤
- Nodejs微信公眾號開發NodeJS
- Sanic 微信公眾號開發 --- 初探
- Python微信公眾號開發Python
- 微信公眾號開發點滴
- php 獲取微信公眾號access_tokenPHP
- Senparc.Weixin.MP SDK 微信公眾平臺開發教程(三):微信公眾平臺開發驗證
- 【Java】微信公眾號開發筆記Java筆記
- 微信公眾號開發之坑(一)
- PHP微信公眾號開發——公共方法PHP
- java開發微信公眾平臺(一)-- 伺服器配置Java伺服器
- 微信公眾號測試號開發小結
- 微信公眾號開發-開發環境搭建並通過java程式碼獲取微信access_token開發環境Java
- [微信公眾號] 配置與應用
- 【微信公眾號】配置與應用
- 微信公眾號選單的配置
- TNW-獲取微信公眾號的 access_tokenTNW
- 微信公眾號開發之客服訊息
- 記一次微信公眾號開發
- 微信公眾號開發推送事件排重事件
- 微信公眾號支付開發手記(node)
- Laravel+easywechat 開發微信公眾號Laravel
- 微信公眾號使用者管理開發
- 申請微信公眾號開發web appWebAPP
- “微信公眾號-設定-基本配置”的配置
- 微信公眾號開發 —— 微信網頁授權小記網頁
- Spring Boot 開發微信公眾號後臺Spring Boot
- Python+Tornado開發微信公眾號Python
- 微信公眾號開發-後端demo(隨錄)後端