版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】微信公眾號(hào)完整開發(fā)的示例分析
這篇文章將為大家詳細(xì)講解有關(guān)微信公眾號(hào)完整開發(fā)的示例分析,在下覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
這篇文章介紹的內(nèi)容是關(guān)于微信公眾號(hào)開發(fā)完整教程一,有著一定的參考價(jià)值,現(xiàn)在分享給大家,有需要的朋友可以參考一下因?yàn)楣ぷ鞯男枰?,這一兩年對(duì)微信公眾號(hào)和小程序,項(xiàng)目制作的比較多。所以我才打算寫一篇全面的制作教程,當(dāng)然了,最好的教程是微信工作平臺(tái)的文檔。我這里只是講述一下我的工作中的制作流程。所有相關(guān)文章的源碼,我托管在我自己的github上面,歡迎關(guān)注:地址點(diǎn)擊打開鏈接。接下來(lái)開始我們的教程。1.微信與公眾平臺(tái)的區(qū)別:微信:即時(shí)聊天的軟件,屬于一對(duì)一的關(guān)系微信公眾平臺(tái):屬于一對(duì)多的關(guān)系。2.訂閱號(hào)與服務(wù)號(hào)的區(qū)別:訂閱號(hào):針對(duì)個(gè)人或媒體每天可以群發(fā)1條信息,默認(rèn)不具有自定義菜單。服務(wù)器號(hào):針對(duì)企業(yè)或銀行每月可以群發(fā)4條信息,默認(rèn)具有自定義菜單。運(yùn)營(yíng)主體是組織(比如企業(yè)、媒體、公益組織)的,可以申請(qǐng)服務(wù)號(hào)。運(yùn)營(yíng)主體是組織和個(gè)人的可以申請(qǐng)訂閱號(hào),但是個(gè)人不能申請(qǐng)服務(wù)號(hào)。3.公眾平臺(tái)的兩種模式:1、編輯模式:直接使用微信公眾平臺(tái)所提供的后臺(tái)操作進(jìn)行用戶交互。編輯模式可以使用在如下的場(chǎng)景:不具備開發(fā)能力的運(yùn)營(yíng)者,主要是進(jìn)行品牌宣傳、新聞媒體、自助客服的公眾賬號(hào),運(yùn)營(yíng)初期,不需要特別多的功能,開發(fā)模式系統(tǒng)升級(jí),故障等特殊情況2、開發(fā)者模式:直接使用接口代碼實(shí)現(xiàn)用戶的交流4.微信公眾平臺(tái)前期準(zhǔn)備:注冊(cè)公眾平臺(tái),擁有線上服務(wù)器5.認(rèn)識(shí)一下編輯模式:原理:選擇對(duì)象選擇素材進(jìn)行群發(fā):?jiǎn)⒂米远x菜單,并開啟:點(diǎn)擊查看,進(jìn)入設(shè)置界面:上述講述的主要是編輯模式的使用,我想很多人應(yīng)該都會(huì)使用,其實(shí)和我們平常在論壇編輯文章和帖子差不多。6.開發(fā)者模式原理:注意:在開啟開發(fā)者模式之后編輯模式中部分功能不能正常使用。即開發(fā)者模式跟編輯模式存在沖突。進(jìn)入設(shè)置界面:修改配置:設(shè)置結(jié)果如下圖:填寫上你的服務(wù)器文件地址,token,點(diǎn)擊提交,驗(yàn)證即可。如果提交并驗(yàn)證通過(guò),就進(jìn)入到開發(fā)者模式public
function
valid(){
//獲取隨機(jī)字符串
$echoStr
=
input("echostr");
if($echoStr){
//
驗(yàn)證接口的有效性,由于接口有效性的驗(yàn)證必定會(huì)傳遞echostr
參數(shù)
if($this
->checkSignature()){
echo
$echoStr;
exit;
}
}else{
$this->responseMsg();
}
}
protected
function
checkSignature()
{
//
微信加密簽名
$signature
=
input("signature");
$timestamp
=
input("timestamp");//時(shí)間戳
$nonce
=input("nonce");//隨機(jī)數(shù)
$token
=
"weixin";
//token值,必須和你設(shè)置的一樣
$tmpArr
=array($token,$timestamp,$nonce);
sort($tmpArr,SORT_STRING);
$tmpStr
=
implode($tmpArr);
$tmpStr
=sha1($tmpStr);
if($tmpStr
==
$signature){
return
true;
}else{
return
false;
}
}關(guān)于上述代碼中的變量來(lái)源,微信都有詳細(xì)的說(shuō)明,我搭建的公眾號(hào)使用的是PHP7.0版本,TP5.0框架。在這里說(shuō)明一下。上述代碼只會(huì)執(zhí)行一次,開啟開發(fā)者模式之后,就不會(huì)在執(zhí)行,只會(huì)執(zhí)行上述代碼中的responseMsg方法。我們先上傳一段測(cè)試代碼試試,回復(fù)文本消息,是否有回復(fù),代碼如下:public
function
responseMsg()
{
//get
post
data,
May
be
due
to
the
different
environments
$postStr
=
file_get_contents('php://input');
//extract
post
data
if
(!empty($postStr)){
/*
libxml_disable_entity_loader
is
to
prevent
XML
eXternal
Entity
Injection,
the
best
way
is
to
check
the
validity
of
xml
by
yourself
*/
libxml_disable_entity_loader(true);
$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
world!";
$resultStr
=
sprintf($textTpl,
$fromUsername,
$toUsername,
$time,
$msgType,
$contentStr);
echo
$resultStr;
}else{
echo
"Input
something...";
}
}else
{
echo
"";
exit;
}
}結(jié)果如下:,由于微信的網(wǎng)頁(yè)授權(quán)的限制,所以我們可以申請(qǐng)測(cè)試賬號(hào),我這里使用的就是測(cè)試賬號(hào)。上述的開啟開發(fā)者模式是一樣的。只需要去申請(qǐng)一個(gè)測(cè)試賬號(hào)就好。申請(qǐng)的地方:如果出現(xiàn)上述的代碼,說(shuō)明我們已經(jīng)測(cè)試成功。接下來(lái),我們開始獲取access_token的值,這個(gè)參數(shù)對(duì)于我們來(lái)說(shuō)很重要。因?yàn)閍ccess_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需使用access_token。開發(fā)者需要進(jìn)行妥善保存。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效。access_token是身份認(rèn)證其他接口基本上都需要使用該值進(jìn)行驗(yàn)證。7.access_token獲?。海梢栽诒镜販y(cè)試)獲取access_token方式一:結(jié)果如下:獲取access_token方式二:結(jié)果如下:我們開始對(duì)上述的代碼進(jìn)行封裝,因?yàn)閍ccess_token,每天只能調(diào)用2000次,所以我們要緩存起來(lái),這樣才能達(dá)到復(fù)用的效果,//獲取請(qǐng)求的地址的方法if(!function_exists("http_curl")){
function
http_curl($url,$data
=array(),$method
="get",$returnType
="json")
{
//1.開啟會(huì)話
$ch
=
curl_init();
//2.設(shè)置參數(shù)
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
if($method!="get"){
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
curl_setopt($ch,CURLOPT_URL,$url);
//執(zhí)行會(huì)話
$json
=
curl_exec($ch);
curl_close($ch);
if($returnType
==
"json"){
return
json_decode($json,true);
}
return
$json;
}
}
if(!function_exists('get_access_token')){
function
get_access_token()
{
$appid
=
"wx1ba8f59d9e2c0be0";
//微信的appid
$secret
="9e65155599fb9ec047455e197ff6e121";
//微信的開發(fā)者密鑰
//
讀取緩存中的內(nèi)容
include_once
"MyMemcache.php";
//引入緩存方法文件
$obj
=
new
\MyMemcache("53");
$value
=
$obj
->get($appid);
if(!$value){
$url
=
"/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
$result
=
http_curl($url);
$value
=
$result['access_token'];
$obj->set($appid,$value,7000);
}
return
$value;
}
}上述代碼就是我對(duì)這兩個(gè)方法的封裝,其中我們用到了緩存技術(shù):緩存的方法如下://memcache操作類class
MyMemcache{
public
$conn;
public
$isMemcache
=true;
public
function
__construct($host="",$port='11211')
{
//
建立連接
if(class_exists('MyMemcache')){
$obj
=new
\Memcache();
}else{
$this
->isMemcache
=false;
$obj
=new
\Memcached();
}
$obj
->addServer($host,$port);
$this
->conn
=$obj;
}
//獲取數(shù)據(jù)
public
function
get($key)
{
return
$this->conn->get($key);
}
//設(shè)置數(shù)據(jù)
public
function
set($key,$value,$expire=0)
{
if($this->isMemcache){
$this->conn->set($key,$value,0,$expire);
}else{
//
Memcached擴(kuò)展的操作方式
$this->conn->set($key,$value,$expire);
}
}
}結(jié)合上述的三個(gè)方法,我們就可以實(shí)現(xiàn)獲取access_token的值,并保存在緩存系統(tǒng),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度膩?zhàn)赢a(chǎn)品銷售與售后服務(wù)合同2篇
- 二零二五年度環(huán)保技術(shù)開發(fā)合伙投資合同
- 2024版學(xué)校污水處理設(shè)施清掏協(xié)議版B版
- 忻州師范學(xué)院《建筑工程評(píng)估基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年水利工程勞務(wù)派遣與設(shè)備租賃合同3篇
- 西安工商學(xué)院《圖像處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢警官職業(yè)學(xué)院《低頻模擬電路》2023-2024學(xué)年第一學(xué)期期末試卷
- 文山學(xué)院《房屋建筑學(xué)課程設(shè)討》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年生物制藥技術(shù)轉(zhuǎn)讓及合作開發(fā)協(xié)議2篇
- 二零二五年度廠長(zhǎng)任期企業(yè)戰(zhàn)略規(guī)劃與執(zhí)行合同2篇
- 2024年滄州經(jīng)濟(jì)開發(fā)區(qū)招聘社區(qū)工作者筆試真題
- 中外美術(shù)史試題及答案
- 2025年安徽省銅陵市公安局交警支隊(duì)招聘交通輔警14人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 公共政策分析 課件 第8章政策評(píng)估;第9章政策監(jiān)控
- 人教版八年級(jí)上學(xué)期物理期末復(fù)習(xí)(壓軸60題40大考點(diǎn))
- 企業(yè)環(huán)保知識(shí)培訓(xùn)課件
- 2024年度管理評(píng)審報(bào)告
- 暨南大學(xué)《微觀經(jīng)濟(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)藥銷售合規(guī)培訓(xùn)
- DB51-T 5038-2018 四川省地面工程施工工藝標(biāo)準(zhǔn)
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案
評(píng)論
0/150
提交評(píng)論