微信小程序通过PHP控制云开发数据库的写入,读出,更新,删除
微信小程序通過云服務(wù)器控制云數(shù)據(jù)庫的寫入,讀出,更新,刪除
由于微信個(gè)人版程序限制,使得小程序的功能不太全面。利用云服務(wù)器做后端交互與云開發(fā),可以一定程度上解除部分小程序的限制
下面筆者詳細(xì)說明關(guān)于使用PHP接口與小程序端云開發(fā)進(jìn)行交互的方法
文章目錄
- 微信小程序通過云服務(wù)器控制云數(shù)據(jù)庫的寫入,讀出,更新,刪除
- 前言
- 一、怎樣使用access_token
- 實(shí)時(shí)動(dòng)態(tài)緩存生成access_token的方法
- 二、數(shù)據(jù)庫調(diào)用步驟
- 1.使用CURL模擬POST/GET提交
- 2.與微信接口互相訪問
- 總結(jié)
前言
由于微信個(gè)人版程序限制,使得小程序的功能不太全面。利用云服務(wù)器做后端交互與云開發(fā),可以一定程度上解除部分小程序的限制
最近正在參加小程序開發(fā)大賽,下面案例可供參考
一、怎樣使用access_token
access_token
access_token 是小程序全局唯一后臺(tái)接口調(diào)用憑據(jù),調(diào)用絕大多數(shù)后臺(tái)接口時(shí)都需使用。開發(fā)者可以通過 getAccessToken 接口獲取并進(jìn)行妥善保存。
請求地址
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
請求參數(shù)
grant_type string 是 填寫 client_credential
appid string 是 小程序唯一憑證,即 AppID,可在「微信公眾平臺(tái) - 設(shè)置 - 開發(fā)設(shè)置」頁中獲得。(需要已經(jīng)成為開發(fā)者,且?guī)ぬ?hào)沒有異常狀態(tài))
secret string 是 小程序唯一憑證密鑰,即 AppSecret,獲取方式同 appid
詳情查看微信開發(fā)者指引
實(shí)時(shí)動(dòng)態(tài)緩存生成access_token的方法
筆者在這里通過使用生成緩存文件txt動(dòng)態(tài)查詢accesstoken
<?php //appID獲取 $appid='這里是你的APPID'; //app密匙 $secret='這里是你的APP密匙'; //app環(huán)境 $env = '這里是你的APP環(huán)境'; //訪問密匙 $key = '為了信息安全,建議增加密匙'; //$getkey = $_GET['key']; if($getkey==$key){ //緩存文件讀取 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $content = file_get_contents("$DOCUMENT_ROOT/actoken.txt"); $readarray = explode(',', $content); $access_token = $readarray[0]; //var_dump($readarray); //判斷文件是否到期 if(time()>$readarray[1]){ //獲取新數(shù)據(jù) $data = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret"); $getarray = json_decode($data, true); $nowtoken = $getarray["access_token"]; //文件緩存 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $fp = fopen("$DOCUMENT_ROOT/actoken.txt",'w'); fwrite($fp,$nowtoken.','); fwrite($fp,time()+7200); fclose($fp); //再次重復(fù)讀取 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $content = file_get_contents("$DOCUMENT_ROOT/actoken.txt"); $readarray = explode(',', $content); $access_token = $readarray[0]; } }else{header('location:./ban.php'); } //獲取到的token //var_dump($access_token) ?>二、數(shù)據(jù)庫調(diào)用步驟
1.使用CURL模擬POST/GET提交
由于官方的接口僅支持POST發(fā)送數(shù)據(jù),需要提交模擬:
function post_curls($url, $post){$curl = curl_init(); // 啟動(dòng)一個(gè)CURL會(huì)話curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認(rèn)證證書來源的檢查curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從證書中檢查SSL加密算法是否存在curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬用戶使用的瀏覽器curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動(dòng)跳轉(zhuǎn)curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動(dòng)設(shè)置Referercurl_setopt($curl, CURLOPT_POST, 1); // 發(fā)送一個(gè)常規(guī)的Post請求curl_setopt($curl, CURLOPT_POSTFIELDS, $post); // Post提交的數(shù)據(jù)包curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設(shè)置超時(shí)限制防止死循環(huán)curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區(qū)域內(nèi)容curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回$res = curl_exec($curl); // 執(zhí)行操作if (curl_errno($curl)) {echo 'Errno'.curl_error($curl);//捕抓異常}curl_close($curl); // 關(guān)閉CURL會(huì)話return $res; // 返回?cái)?shù)據(jù),json格式}//json轉(zhuǎn)數(shù)組function json_to_array($str) {if (is_string($str))$str = json_decode($str);$arr=array();foreach($str as $k=>$v) {if(is_object($v) || is_array($v))$arr[$k]=json_to_array($v);else$arr[$k]=$v;}return $arr; }2.與微信接口互相訪問
在這里,變量$query是需要對數(shù)據(jù)庫操作的內(nèi)容,變量access_token是您獲取到的微信密匙:
請注意,一個(gè)地址對數(shù)據(jù)庫的操作只能是一種!!!不同的操作訪問的posturl都不一樣!詳情參考微信官方提供的文檔
//與微信接口互相訪問 //數(shù)據(jù)更新 function getwxupdate($query,$accesstoken){$data['env'] = $env;$data['query'] = $query;$body = json_encode($data);$info = post_curls("https://api.weixin.qq.com/tcb/databaseupdate?access_token=$accesstoken",$body);return $info; } //數(shù)據(jù)插入 function getwxinsert($query,$accesstoken){$data['env'] = $env;$data['query'] = $query;$body = json_encode($data);$info = post_curls("https://api.weixin.qq.com/tcb/databaseadd?access_token=$accesstoken",$body);return $info; } //數(shù)據(jù)取用 function getwxfetch($query,$accesstoken){$data['env'] = $env;$data['query'] = $query;$body = json_encode($data);$info = post_curls("https://api.weixin.qq.com/tcb/databasequery?access_token=$accesstoken",$body);return $info; } //數(shù)據(jù)刪除 function getwxdelete($query,$accesstoken){$data['env'] = $env;$data['query'] = $query;$body = json_encode($data);$info = post_curls("https://api.weixin.qq.com/tcb/databasedelete?access_token=$accesstoken",$body);return $info; }有了數(shù)據(jù)庫操作您就可以繼續(xù)使用PHP或其他語言與小程序云進(jìn)行對接,也可用作云開發(fā)的管理后臺(tái)的制作等等…
總結(jié)
目前使用到的文件有3個(gè),第一個(gè)是獲取的access_token,第二個(gè)是為其生成的token緩存txt,第三個(gè)是取庫操作。剩下的看您發(fā)揮了~
總結(jié)
以上是生活随笔為你收集整理的微信小程序通过PHP控制云开发数据库的写入,读出,更新,删除的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秋水仙碱与牛血清白蛋白 (BSA)偶联物
- 下一篇: 准备情人节礼物比写代码难?来看看IT直男