亚洲视频综合网_欧美午夜宅男影院在线观看_亚洲成成品网站_欧美综合激情网_国产91精品青草社区_一个人看的www久久_亚洲欧美综合区自拍另类_欧美视频在线观看 亚洲欧_成人性生交大片免费观看嘿嘿视频_26uuu日韩精品一区二区_成人亚洲综合色就1024_国产视频在线观看一区二区_久久琪琪电影院_国产97在线播放_欧美整片在线观看_欧美午夜xxx

快消品貨源批發市場
快消品貨源分銷平臺
 
 
當前位置: 貨源批發網 » 網商學院 » 網店推廣 » 營銷技巧 » 微信營銷 » 微信公眾平臺開發入門教程

微信公眾平臺開發入門教程

放大字體  縮小字體 發布日期:2024-08-09 07:26:42  來源:電商聯盟  作者:樂發網  瀏覽次數:3

  在這篇微信公眾平臺開發教程中,我們假定你已經有了PHP語言程序、MySQL數據庫、計算機網絡通訊、及HTTP/XML/CSS/JS等基礎。
  我們將使用微信公眾賬號方倍工作室作為講解的例子,二維碼見底部。
  本系列教程將引導你完成如下任務:
  創建新浪云計算平臺應用
  啟用微信公眾平臺開發模式
  基礎接口消息及事件
  微信公眾平臺PHP SDK
  微信公眾平臺開發模式原理
  開發天氣預報功能
  第一章 申請服務器資源
  創建新浪云計算應用
  申請賬號
  我們使用SAE新浪云計算平臺作為服務器資源,并且申請PHP環境+MySQL數據庫作為程序運行環境。
  申請地址:http://sae.sina.com.cn/ ,使用新浪微博賬號可以直接登錄SAE,登錄后SAE將贈送500個免費云豆。
微信公眾平臺開發入門教程
  創建新應用
  登錄后點擊頂部【我的首頁 】
微信公眾平臺開發入門教程
  點擊下側的創建新應用,這時會彈出提示, 禁止放置違法違規內容,點擊繼續創建,彈出如下窗口。
微信公眾平臺開發入門教程
  選擇一個未使用的appid,如果老是已經被使用不知道該什么好,就填寫你的QQ號或者手機號吧。
  填寫二級域名AppID、應用名稱、驗證碼,開發語言選擇PHP,應用類型選擇web應用。然后點擊創建應用
微信公眾平臺開發入門教程
  應用創建成功。并自動跳轉到應用列表中,可以看到已經有剛才創建的CCTV-7
微信公眾平臺開發入門教程
 
  選擇CCTV-7右側的應用管理 下面的代碼管理 ,
微信公眾平臺開發入門教程
  跳轉到代碼管理
微信公眾平臺開發入門教程
點擊右側的
微信公眾平臺開發入門教程
微信公眾平臺開發入門教程
  版本號默認為1,點擊創建,成功后如下圖所示:
微信公眾平臺開發入門教程
  到這里,就成功創建了一個域名URL為 http://cctv7.sinaapp.com/ 的應用了。
上傳代碼 http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 
將以下代碼復制下來,另存為index.php。必須使用專業的開發編輯軟件操作,例如Notepad++,不要使用Windows自帶的記事本等。
微信公眾平臺開發入門教程 <?php 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); $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($keyword == "?" || $keyword == "?") { $msgType = "text"; $contentStr = date("Y-m-d H:i:s",time()); $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; } }else{ echo ""; exit; } } } ?>微信公眾平臺開發入門教程

然后將index.php文件壓縮成ZIP格式,注意不能用RAR格式

微信公眾平臺開發入門教程
  這樣會生成一個index.zip的文件?;蛘咧苯酉螺d方倍已經壓縮好的zip文件 點此下載
  在代碼管理界面中,選擇操作按鈕。
微信公眾平臺開發入門教程
  選擇上傳代碼包。
  點擊上傳文件,選擇剛才壓縮好的index.zip文件,點擊上傳,上傳成功后如下所示
微信公眾平臺開發入門教程
  點擊操作按鈕下的代碼編輯,
微信公眾平臺開發入門教程
  我們可以看到index.php已經上傳成功,雙擊可以查看編輯里面的代碼
微信公眾平臺開發入門教程
  新浪云應用的創建就成功了。
  第二章 啟用開發模式
  微信公眾平臺開發模式
  高級功能
  微信公眾平臺地址:https://mp.weixin.qq.com
  登錄微信公眾平臺后臺,選擇高級功能,進入后就看到兩種模式
微信公眾平臺開發入門教程
  我們需要先關閉編輯模式。點擊編輯模式的進入
微信公眾平臺開發入門教程
  滑動關閉
微信公眾平臺開發入門教程
  開發模式
  進入開發模式里面
微信公眾平臺開發入門教程
  點擊成為開發者
微信公眾平臺開發入門教程
  彈出URL和Token填寫框
微信公眾平臺開發入門教程
  此處的URL為上篇中介紹的云應用的域名,而Token在index.php中定義為weixin。提交后提示你已成為開發者。
微信公眾平臺開發入門教程
  再滑動右上角啟用按鈕。
微信公眾平臺開發入門教程
  恭喜,你成功啟用開發模式。
  自動回復
  在上面的例子中,實現了一個發送“?”就能回復當前時間的功能。
  效果如下:
微信公眾平臺開發入門教程
  至此,你的微信公眾平臺賬號已經實現自動回復了。
  第三章 基礎接口消息及事件 
  所有賬號在申請之后,都將獲得基礎接口的權限,基礎接口中將包括接收用戶消息,向用戶回復消息,接受事件推送等三種服務。
微信公眾平臺開發入門教程
  接收用戶消息
  目前普通用戶能向公眾賬號推送五種格式的消息:文本(包括表情)、語音、圖片、視頻、位置、鏈接。
  下面就這五種分別詳解如下:
  1. 文本(包括表情)
  發送文本及表情
微信公眾平臺開發入門教程
  2. 圖片
  發送圖片
微信公眾平臺開發入門教程
  3. 語音
  發送語音
微信公眾平臺開發入門教程
  4. 視頻
  發送視頻
微信公眾平臺開發入門教程
  5. 位置
  發送位置
微信公眾平臺開發入門教程
  6. 鏈接
  發送鏈接
微信公眾平臺開發入門教程
  向用戶回復消息
  目前普通公眾賬號能向用戶推送六種格式的消息:文本、圖文、音樂、圖片、語音、視頻。其中圖文消息包括單條圖文消息和多條圖文消息,展示方式有一點點不同。
  下面就這幾種分別詳解如下:【圖片、語音、視頻由于需要用到和高級接口相關的media_id,在本教程中暫不討論。】
  1. 文本消息格式
  回復文本
微信公眾平臺開發入門教程
  2. 圖文消息格式
  2.1 單條圖文消息
  回復單條圖文
微信公眾平臺開發入門教程
  2.2 多圖文消息
  回復多圖文
微信公眾平臺開發入門教程
  3. 音樂消息
  回復音樂消息
微信公眾平臺開發入門教程
  接收事件推送
  目前用戶在關注和取消關注,以及點擊菜單的時候會自動向公眾平臺發送事件推送消息:
  1. 關注事件
微信公眾平臺開發入門教程
微信公眾平臺開發入門教程
  第四章 微信公眾平臺PHP SDK
方倍工作室開發了微信公眾平臺的PHPSDK,集成了目前所有消息及事件的接收及發送,代碼如下:
<?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); if (!isset($_GET['echostr'])) { $wechatObj->responseMsg(); }else{ $wechatObj->valid(); } 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, SORT_STRING); $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)){ $this->logger("R ".$postStr); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "event": $result = $this->receiveEvent($postObj); break; case "text": $result = $this->receiveText($postObj); break; case "image": $result = $this->receiveImage($postObj); break; case "location": $result = $this->receiveLocation($postObj); break; case "voice": $result = $this->receiveVoice($postObj); break; case "video": $result = $this->receiveVideo($postObj); break; case "link": $result = $this->receivelink($postObj); break; default: $result = "unknown msg type: ".$RX_TYPE; break; } $this->logger("T ".$result); echo $result; }else { echo ""; exit; } } //接收事件消息 private function receiveEvent($object) { $content = ""; switch ($object->Event) { case "subscribe": $content = "歡迎關注方倍工作室 "; $content .= (!empty($object->EventKey))?("\n來自二維碼場景 ".str_replac("qrscene_","",$obje ct->EventKey)):""; break; case "unsubscribe": $content = "取消關注"; break; case "SCAN": $content = "掃描場景 ".$object->EventKey; break; case "CLICK": switch ($object->EventKey) { case "COMPANY": $content = "方倍工作室提供互聯網相關產品與服務。"; break; default: $content = "點擊菜單:".$object->EventKey; break; } break; case "LOCATION": $content = "上傳位置:緯度 ".$object->Latitude.";經度 ".$object->Longitude; break; case "VIEW": $content = "跳轉鏈接 ".$object->EventKey; break; default: $content = "receive a new event: ".$object->Event; break; } $result = $this->transmitText($object, $content); return $result; } //接收文本消息 private function receiveText($object) { switch ($object->Content) { case "文本": $content = "這是個文本消息"; break; case "圖文": case "單圖文": $content = array(); $content[] = array("Title"=>"單圖文標題", "Description"=>"單圖文內容", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958"); break; case "多圖文": $content = array(); $content[] = array("Title"=>"多圖文1標題", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958"); $content[] = array("Title"=>"多圖文2標題", "Description"=>"", "PicUrl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958"); $content[] = array("Title"=>"多圖文3標題", "Description"=>"", "PicUrl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958"); break; case "音樂": $content = array("Title"=>"最炫民族風", "Description"=>"歌手:鳳凰傳奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3", "HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3"); break; default: $content = date("Y-m-d H:i:s",time()); break; } if(is_array($content)){ if (isset($content[0]['PicUrl'])){ $result = $this->transmitNews($object, $content); }else if (isset($content['MusicUrl'])){ $result = $this->transmitMusic($object, $content); } }else{ $result = $this->transmitText($object, $content); } return $result; } //接收圖片消息 private function receiveImage($object) { $content = array("MediaId"=>$object->MediaId); $result = $this->transmitImage($object, $content); return $result; } //接收位置消息 private function receiveLocation($object) { $content = "你發送的是位置,緯度為:".$object->Location_X.";經度為:".$object->Location_Y.";縮放級別為:".$object->Scale.";位置為:".$object->Label; $result = $this->transmitText($object, $content); return $result; } //接收語音消息 private function receiveVoice($object) { if (isset($object->Recognition) && !empty($object->Recognition)){ $content = "你剛才說的是:".$object->Recognition; $result = $this->transmitText($object, $content); }else{ $content = array("MediaId"=>$object->MediaId); $result = $this->transmitVoice($object, $content); } return $result; } //接收視頻消息 private function receiveVideo($object) { $content = array("MediaId"=>$object->MediaId, "ThumbMediaId"=>$object->ThumbMediaId, "Title"=>"", "Description"=>""); $result = $this->transmitVideo($object, $content); return $result; } //接收鏈接消息 private function receivelink($object) { $content = "你發送的是鏈接,標題為:".$object->Title.";內容為:".$object->Description.";鏈接地址為:".$object->Url; $result = $this->transmitText($object, $content); return $result; } //回復文本消息 private function transmitText($object, $content) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content); return $result; } //回復圖片消息 private function transmitImage($object, $imageArray) { $itemTpl = "<Image> <MediaId><![CDATA[%s]]></MediaId> </Image>"; $item_str = sprintf($itemTpl, $imageArray['MediaId']); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[image]]></MsgType> $item_str </xml>"; $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time()); return $result; } //回復語音消息 private function transmitVoice($object, $voiceArray) { $itemTpl = "<Voice> <MediaId><![CDATA[%s]]></MediaId> </Voice>"; $item_str = sprintf($itemTpl, $voiceArray['MediaId']); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[voice]]></MsgType> $item_str </xml>"; $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time()); return $result; } //回復視頻消息 private function transmitVideo($object, $videoArray) { $itemTpl = "<Video> <MediaId><![CDATA[%s]]></MediaId> <ThumbMediaId><![CDATA[%s]]></ThumbMediaId> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> </Video>"; $item_str = sprintf($itemTpl, $videoArray['MediaId'], $videoArray['ThumbMediaId'], $videoArray['Title'], $videoArray['Description']); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[video]]></MsgType> $item_str </xml>"; $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time()); return $result; } //回復圖文消息 private function transmitNews($object, $newsArray) { if(!is_array($newsArray)){ return; } $itemTpl = " <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> "; $item_str = ""; foreach ($newsArray as $item){ $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']); } $newsTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <Content><![CDATA[]]></Content> <ArticleCount>%s</ArticleCount> <Articles> $item_str</Articles> </xml>"; $result = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray)); return $result; } //回復音樂消息 private function transmitMusic($object, $musicArray) { $itemTpl = "<Music> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music>"; $item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $m usicArray['HQMusicUrl']); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[music]]></MsgType> $item_str </xml>"; $result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time()); return $result; } //日志記錄 private function logger($log_content) { if(isset($_SERVER['HTTP_APPNAME'])){ //SAE sae_set_display_errors(false); sae_debug($log_content); sae_set_display_errors(true); }else if($_SERVER['REMOTE_ADDR'] != "127.0.0.1"){ //LOCAL $max_size = 10000; $log_filename = "log.xml"; if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);} file_put_contents($log_filename, date('H:i:s')." ".$log_content."\r\n", FILE_APPEND); } } } ?>

使用第一章同樣方法,將上述代碼另存為index.php,壓縮成index.zip,或者直接點擊下載,上傳到SAE,你的公眾賬號就能接收及回復所有消息類型及事件通知了。

在公眾賬號中回復以下文字,你將得到和上一章一樣的回復內容。
文本 圖文 多圖文 音樂 時間

還可以嘗試以下操作,體驗一下其他消息 發送一張圖片給公眾賬號 發送一段語音給公眾賬號 發送一段視頻給公眾賬號 發送位置信息給公眾賬號 發送收藏中的鏈接給公眾賬號

  第五章 微信公眾平臺開發模式原理分析

  在體驗了上一節的各種功能之后,我們只是知其然,這一節里面,將介紹在上面的基礎上介紹微信公眾平臺收發消息機制及原理,這是知其所以然。
  開發模式成為開發者時的消息校驗原理
  在開發者首次提交驗證申請時,微信服務器將發送GET請求到填寫的URL上,并且帶上四個參數(signature、timestamp、nonce、echostr),開發者通過對簽名(即signature)的效驗,來判斷此條消息的真實性。
  此后,每次開發者接收用戶消息的時候,微信也都會帶上前面三個參數(signature、timestamp、nonce)訪問開發者設置的URL,開發者依然通過對簽名的效驗判斷此條消息的真實性。效驗方式與首次提交驗證申請一致。
參數 描述 signature 微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。 timestamp 時間戳 nonce 隨機數 echostr 隨機字符串
  開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。
  加密/校驗流程如下:
  1. 將token、timestamp、nonce三個參數進行字典序排序
  2. 將三個參數字符串拼接成一個字符串進行sha1加密
  3. 開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信
  啟用接口是由代碼中的checkSignature()函數來實現校驗的。如果對這一原理難以理解,可以暫時不用深究,繼續看下面。
  成為開發者后消息收發時的原理
  再來看下這個圖,當用戶發送一個“?”時,系統回復了一個時間
微信公眾平臺開發入門教程
  這一原理的消息流程圖如下所示。
微信公眾平臺開發入門教程
  從上圖可以看出,用戶在發送一個?后,微信服務器將組裝一個消息發送給我們自己的服務器,自己的服務器然后回復一個時間,并且將該時間也按一定的規則組裝,回復給公眾賬號,公眾賬號再回復給用戶,在這個收發過程中,發送方和接收方進行了調換(ToUserName和FromUserName值互換),收發都是以xml格式在后臺進行傳輸的,
  所以掌握各種消息類型的收發就是進行微信公眾平臺開發的基礎 !
  下面對前面所述的各種消息類型講解其XML數據包的格式。
  各種收發消息的XML數據包分析
  接收消息
  1. 文本(包括表情)
  發送文本及表情
微信公眾平臺開發入門教程
文字后臺格式:
微信公眾平臺開發入門教程 <xml> <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName> <CreateTime>1359028446</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[測試文字]]></Content> <MsgId>5836982729904121631</MsgId></xml>微信公眾平臺開發入門教程

表情后臺格式微信公眾平臺開發入門教程 <xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName><FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName><CreateTime>1359044526</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[/::)/::~/::B/::|/:8-)]]></Content><MsgId>5837051792978241864</MsgId></xml>微信公眾平臺開發入門教程

XML格式講解 ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號 FromUserName 消息發送方微信號 CreateTime 消息創建時間 MsgType 消息類型;文本消息為text Content 消息內容 MsgId 消息ID號

可以看出,文本和表情的消息類型均為文本

  2. 圖片
  發送圖片
微信公眾平臺開發入門教程

樂發網超市批發網提供超市貨源信息,超市采購進貨渠道。超市進貨網提供成都食品批發,日用百貨批發信息、微信淘寶網店超市采購信息和超市加盟信息.打造國內超市采購商與批發市場供應廠商搭建網上批發市場平臺,是全國批發市場行業中電子商務權威性網站。

本文內容整合網站:百度百科、知乎、淘寶平臺規則

本文來源: 微信公眾平臺開發入門教程

分享與收藏:  網商學院搜索  告訴好友  關閉窗口  打印本文 本文關鍵字:
 
更多..資源下載
微信營銷圖文
最先進的病毒式微信營銷模式就是這樣的!?。?/></a>
<ul><li><a href=最先進的病毒式微信營
微信營銷網商學院推薦
微信營銷點擊排行
 
手機版 手機掃描訪問
亚洲视频综合网_欧美午夜宅男影院在线观看_亚洲成成品网站_欧美综合激情网_国产91精品青草社区_一个人看的www久久_亚洲欧美综合区自拍另类_欧美视频在线观看 亚洲欧_成人性生交大片免费观看嘿嘿视频_26uuu日韩精品一区二区_成人亚洲综合色就1024_国产视频在线观看一区二区_久久琪琪电影院_国产97在线播放_欧美整片在线观看_欧美午夜xxx
<cite id="cigk2"><table id="cigk2"></table></cite>

<strike id="cigk2"></strike>
  • <ul id="cigk2"><dfn id="cigk2"></dfn></ul>
    <fieldset id="cigk2"></fieldset>
    国产一区二区黄色| 欧美成人伊人久久综合网| 亚洲线精品一区二区三区八戒| 欧美视频观看一区| 国产日韩一区二区三区在线| 亚洲精品色婷婷福利天堂| 欧美午夜精品久久久久久孕妇| 欧美精品一区二区在线播放| 国产精品高清一区二区三区| 老司机成人在线视频| 亚洲专区一区二区三区| 欧美激情无毛| 亚洲图中文字幕| 久久久久这里只有精品| 亚洲欧美日韩在线| 在线播放亚洲一区| 亚洲精品日韩在线观看| 激情欧美一区| 亚洲欧美一区二区激情| 韩曰欧美视频免费观看| 久久久久欧美| 亚洲欧美日韩综合| 欧美在线中文字幕| 巨胸喷奶水www久久久免费动漫| 亚洲美女免费视频| 国产精品sss| 久久躁日日躁aaaaxxxx| 亚洲私人影吧| 国产亚洲综合在线| 久久国产精品72免费观看| 欧美激情精品久久久久久蜜臀| 午夜精品久久久久久久久久久久| 红桃视频国产一区| 国产欧美一区二区三区国产幕精品| 久久青青草原一区二区| 国产日韩av高清| 亚洲精品美女久久7777777| 国产一区二区三区四区三区四| 午夜视频一区二区| 亚洲经典自拍| 国产一区在线视频| 国产精品国产三级国产普通话蜜臀| 国产婷婷色一区二区三区在线| 欧美日韩一视频区二区| 精品va天堂亚洲国产| 99成人免费视频| 欧美激情精品久久久久久| 欲香欲色天天天综合和网| 欧美色另类天堂2015| 美女视频黄a大片欧美| 小黄鸭精品aⅴ导航网站入口| 久久精品视频免费观看| 国产精品二区在线| 久久精品一区蜜桃臀影院| 亚洲精品看片| 国产精品户外野外| 亚洲高清网站| 午夜精品久久99蜜桃的功能介绍| 久久精品成人| 亚洲欧美另类中文字幕| 欧美日本视频在线| 欧美午夜宅男影院| 欧美激情一级片一区二区| 黄色欧美日韩| 欧美日韩伦理在线免费| 欧美日韩国内自拍| 亚洲国产成人精品久久久国产成人一区| 国产精品v亚洲精品v日韩精品| 欧美成人在线免费观看| 亚洲乱码精品一二三四区日韩在线| 久久aⅴ国产欧美74aaa| 一本色道88久久加勒比精品| 欧美国产日韩xxxxx| 久久精品久久99精品久久| 国产亚洲一区在线| 久久精品主播| 99这里只有久久精品视频| 亚洲精品视频一区| 欧美福利一区二区三区| 国产精品v欧美精品v日本精品动漫| 国产最新精品精品你懂的| 国产精品理论片在线观看| 午夜精品久久久久久久久久久久久| 西瓜成人精品人成网站| 亚洲福利视频三区| 久久精品欧洲| 久久嫩草精品久久久精品| 国产精品热久久久久夜色精品三区| 午夜免费久久久久| 妖精视频成人观看www| 亚洲激情专区| 亚洲免费观看在线视频| 欧美视频在线看| 伊人久久大香线蕉综合热线| 久色婷婷小香蕉久久| 国产精品蜜臀在线观看| 国产在线视频欧美| 欧美激情第3页| 日韩一级欧洲| 欧美国产极速在线| 亚洲一区图片| 欧美特黄一级大片| 欧美成人激情在线| 亚洲免费一级电影| 国产精品高清一区二区三区| 亚洲高清在线观看一区| 久热这里只精品99re8久| 久久精品91久久久久久再现| 久久精品国产77777蜜臀| 一本大道久久a久久精二百| 老鸭窝91久久精品色噜噜导演| 国产欧美日韩中文字幕在线| 国产一区二区成人| 亚洲美女在线国产| 激情自拍一区| 亚洲一区二区三区视频| 亚洲国产黄色片| 欧美日本在线播放| 欧美视频在线看| 欧美一区二区三区播放老司机| 国产日韩欧美在线观看| 一区在线播放| 久久字幕精品一区| 亚洲深夜激情| 亚洲午夜精品在线| 国产精品人成在线观看免费| 亚洲一区网站| 国产日韩在线看片| 久久精品中文字幕一区二区三区| 最新国产拍偷乱拍精品| 久久婷婷蜜乳一本欲蜜臀| 美女国产精品| 亚洲一区999| 久久久一区二区| 久久夜色撩人精品| 在线视频欧美一区| 国产日韩欧美不卡| 免费成人av在线看| 在线亚洲精品福利网址导航| 亚洲女同精品视频| 欧美激情国产高清| 欧美国产视频日韩| 亚洲人体大胆视频| 伊人色综合久久天天| 亚洲国产精品综合| 亚洲午夜在线观看视频在线| 91久久久久久久久| 国产日韩综合一区二区性色av| 午夜精品国产精品大乳美女| 国产精品久久午夜| 夜夜嗨av一区二区三区网页| 久久青青草原一区二区| 国产精品久久久久久久久果冻传媒| 亚洲一区二区三区激情| 久久久久久亚洲精品不卡4k岛国| 午夜国产一区| 国产精品呻吟| 亚洲欧美日韩专区| 国产精品午夜视频| 亚洲国产一区二区三区高清| 在线观看久久av| 亚洲欧美日韩国产综合精品二区| 久久精品卡一| 久久精品国产v日韩v亚洲| 国产一级揄自揄精品视频| 久久精品视频在线播放| 欧美欧美在线| 亚洲黄色一区| 国产免费成人| 欧美伊人久久久久久午夜久久久久| 欧美日韩在线精品一区二区三区| 久久精品亚洲热| 欧美日本国产| 欧美激情亚洲另类| 国产一区二区三区日韩欧美| 久久久女女女女999久久| 日韩天堂在线观看| 国产精品xxxav免费视频| 欧美一区二区三区在线观看视频| 一区二区在线不卡| 国产欧美一区视频| 欧美日韩在线视频一区| 在线欧美亚洲| 午夜精品福利一区二区蜜股av| 欧美日韩不卡一区| 欧美伊人久久| 亚洲破处大片| 久久久久一本一区二区青青蜜月| 久久精品三级| 欧美激情第10页| 欧美视频在线观看免费网址| 久久精品主播| 99国产精品久久久久老师| 亚洲精品日日夜夜| 国产精品一区二区久激情瑜伽| 免费一级欧美在线大片| 亚洲天堂成人在线视频| 国产精品美女久久久久aⅴ国产馆| 国产在线播精品第三| 亚洲精品在线视频| 亚洲高清资源| 国产精品久久久久久久久免费桃花| 欧美国产大片| 欧美一区日本一区韩国一区| 国产精品免费观看在线| 亚洲婷婷国产精品电影人久久| 欧美精品电影在线| 狠狠色狠狠色综合| 久久精品72免费观看| 美女任你摸久久| 国产女主播在线一区二区| 国内成人精品2018免费看| 欧美 日韩 国产 一区| 午夜久久一区| 亚洲国产精品毛片| 亚洲精选大片| 欧美激情第六页| 久久久久久久激情视频| 免费成人在线视频网站| 国产精品国产馆在线真实露脸| 国产香蕉97碰碰久久人人| 亚洲精品一区二区三区蜜桃久| 欧美精品午夜视频| 国产精品红桃| 午夜精品一区二区三区电影天堂| 国产精品毛片a∨一区二区三区|国| 99国产一区二区三精品乱码| 久久视频这里只有精品| 亚洲第一福利社区| 国产一区二区剧情av在线| 亚洲激情电影中文字幕| 免费看亚洲片| 亚洲综合欧美日韩| 狠狠爱www人成狠狠爱综合网| 老色批av在线精品| 在线观看欧美成人| 欧美日韩另类字幕中文| 国产精品乱子久久久久| 国产精品久久婷婷六月丁香| 欧美激情在线播放| 久久色在线观看| 亚洲欧美成人精品| 国产视频综合在线| 国产一区99| 亚洲日本成人在线观看| 国产亚洲福利社区一区| 欧美一区二区精品在线| 免费在线亚洲欧美| 国产精品成人播放| 亚洲精品国产欧美| 久久日韩粉嫩一区二区三区| 亚洲精品孕妇| 国产一二精品视频| 久久亚洲一区二区三区四区| 在线亚洲欧美视频| 午夜精品福利电影| 国产一区二区三区日韩欧美| 久久久噜噜噜久久| 亚洲国产高潮在线观看| 亚洲一级片在线观看| 性欧美大战久久久久久久免费观看| 性色av一区二区怡红| 欧美三日本三级少妇三2023| 久久天天躁夜夜躁狠狠躁2022| 永久免费毛片在线播放不卡| 一区二区三区在线不卡| 亚洲精品日韩在线| 亚洲国产成人av好男人在线观看| 欧美aaaaaaaa牛牛影院| 国产精品久久久久av| 亚洲第一区中文99精品| aa日韩免费精品视频一| 黄色一区二区在线| 欧美成人中文字幕在线| 亚洲在线中文字幕| 娇妻被交换粗又大又硬视频欧美| 欧美亚洲三区| 亚洲美女一区| 国产精品亚洲不卡a| 久久在线观看视频| 欧美三级日韩三级国产三级| 亚洲欧美日韩国产另类专区| 国产精品一香蕉国产线看观看| 久久精品99国产精品| 国产精品区一区二区三区| 亚洲一区二区三区国产| 欧美激情欧美激情在线五月| 悠悠资源网久久精品| 欧美国产亚洲精品久久久8v| 欧美日韩午夜视频在线观看| 久久国产精品一区二区三区四区| 国产精品国产福利国产秒拍| 亚洲无线观看| 国产精品一区二区在线观看不卡| 99精品热6080yy久久| 亚洲人体1000| 在线观看成人网| 国产一区二区三区在线播放免费观看| 国产精品久久久一区二区三区| 欧美性生交xxxxx久久久| 一本色道久久综合狠狠躁的推荐| 一色屋精品亚洲香蕉网站| 欧美怡红院视频| 女人色偷偷aa久久天堂| 欧美日韩天天操| 美国三级日本三级久久99| 国产精品午夜av在线| 日韩亚洲欧美中文三级| 国产综合久久久久久鬼色| 欧美久久一级| 国产香蕉久久精品综合网| 久久人人爽爽爽人久久久| 国产精品福利在线观看网址| 在线欧美日韩国产| 一本色道久久88综合日韩精品| 久久国产欧美| 国产精品日韩一区二区三区| 欧美在线免费播放| 91久久夜色精品国产九色| 1000部精品久久久久久久久| 国产一区视频在线观看免费| 99亚洲伊人久久精品影院红桃| 一区二区三区鲁丝不卡| 美日韩精品视频| 久久国产直播| 伊人夜夜躁av伊人久久| 亚洲免费一级电影| 在线看国产日韩|