<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LaneWeChat微信PHP開發(fā)框架

          聯(lián)合創(chuàng)作 · 2023-09-24 16:06

          框架簡介

          LanWeChat 框架簡介:微信PHP開發(fā)框架,快速開發(fā)微信公眾號,以第三方代碼包的形式引入即可。

          免費(fèi)使用

          LanWeChat 免費(fèi)使用:非商業(yè)產(chǎn)品,免費(fèi)傳播與使用,并且可以商業(yè)化而無需授權(quán)。

          身經(jīng)百戰(zhàn)

          LanWeChat 身經(jīng)百戰(zhàn):已被中國聯(lián)通、奇虎360、東方國信等上市公司廣泛使用。

          PHP構(gòu)建

          LanWeChat PHP構(gòu)建:全部使用PHP代碼構(gòu)建,PHP跨平臺、開發(fā)高效的特性深受開發(fā)者喜愛。

          完全開源

          LanWeChat 完全開源:非常歡迎貢獻(xiàn)代碼。使用當(dāng)前最流行的開源協(xié)議WTFPL

          通俗文檔

          LanWeChat 通俗文檔:文檔通俗易懂,盡量規(guī)避專業(yè)術(shù)語,努力用最白話的形式表述。

          極易使用

          LanWeChat 極易使用:沒有復(fù)雜的代碼和新生語法,原生語言直接調(diào)用即可。

          開發(fā)語言:PHP

          版本要求:原則PHP5.3以上

          版本規(guī)避:若版本低于PHP5.3,則刪除本框架所有頁面開頭namespace一行即可。

          命名空間:本框架的命名空間均為LaneWeChat開頭。

          常識普及:

          一、微信公眾賬號分兩種,一種是訂閱號,一種是服務(wù)號。

          1、訂閱號是被動響應(yīng)用戶消息功能,并且每天推送一條消息。
          
          2、服務(wù)號是300元/每年認(rèn)證,被動響應(yīng)用戶消息,主動給用戶發(fā)送消息,自定義菜單按鈕,網(wǎng)頁授權(quán)等功能,并且每月推送一條消息。
          
          3、訂閱號適合消息類,新聞類應(yīng)用,常常需要推送文章給用戶的;服務(wù)號適合自助查詢等。
          
          4、訂閱號被認(rèn)證后也享用自定義菜單等功能,仍舊是300元/每年

          二、專業(yè)術(shù)語:

          1、OpenId:微信服務(wù)器并不會告訴公眾號用戶的微信ID,即使是你的關(guān)注者也不行,為了解決開發(fā)中唯一標(biāo)識的問題,微信使用了OpenId,所謂的OpenId,就是用戶和微信公眾號之間的一種唯一關(guān)系。一個(gè)用戶在一個(gè)公眾號面前,享用唯一的OpenId,不會和別人重復(fù)。換言之,同一個(gè)用戶在另一個(gè)公眾號面前,是擁有另一個(gè)OpenId的。再直白些就是$openId = md5('用戶微信ID+公眾號ID')
          
          2、Access_Token:此項(xiàng)只有認(rèn)證號的功能才會使用的到,Access_token是一個(gè)授權(quán)標(biāo)識,即一個(gè)授權(quán)驗(yàn)證碼,一個(gè)標(biāo)識10分鐘內(nèi)有效,10分鐘的有效期內(nèi)公眾號的多個(gè)關(guān)注者可以使用同一個(gè)Access_Token。在使用主動給指定用戶發(fā)送消息、自定義菜單、用戶管理和用戶組管理等功能的時(shí)候,每次操作需要給微信服務(wù)器以參數(shù)的形式附帶Access_token。
          
          3、Access_Token網(wǎng)頁版:本Access_Token網(wǎng)頁版授權(quán)時(shí)會使用到,和2中的Access_Toekn是不同的東西,不過使用我們的LaneWeChat微信快速開發(fā)框架是不需要了解這些的。Access_Token網(wǎng)頁版是說在用戶打開你的公眾號提供的網(wǎng)頁的時(shí)候,你的網(wǎng)頁需要獲取用戶的OpenId、昵稱、頭像等信息的時(shí)候授權(quán)用的。同時(shí),本Access_Token網(wǎng)頁版有兩種用法,一種是打開網(wǎng)頁后彈出一個(gè)授權(quán)框,讓用戶點(diǎn)擊是否授權(quán),界面像主流的開放平臺授權(quán)界面(比如QQ登陸某網(wǎng)站,支付寶賬號登陸某網(wǎng)站等);另一種是不需要彈出授權(quán)框仍舊可以獲取用戶信息,用法可以在實(shí)例中看到。

          如何安裝:

          1、本框架以代碼包的插件形式放在項(xiàng)目的目錄中即可。
          
          2、配置項(xiàng):打開根目錄下的config.php,修改定義常量WECHAT_APPID,WECHAT_APPSECRET,WECHAT_URL。其中前兩項(xiàng)可以在微信公眾號官網(wǎng)的開發(fā)者頁面中找到,而WECHAT_URL是你微信項(xiàng)目的URL,以http://開頭
          
          3、本框架的唯一入口為根目錄下的wechat.php
          
          4、首次使用時(shí),請打開根目錄下的wechat.php,注釋掉21行,并且打開注釋第24行。
          
          5、在微信開發(fā)者-填寫服務(wù)器配置頁面,填寫URL為http://www.lanecn.com/wechat.php,保證該URL可以通過80端口正常訪問(微信服務(wù)器目前只支持80端口),并且將Token填寫為config.php中的WECHAT_TOKEN常量的內(nèi)容(可以修改)。
          
          6、微信服務(wù)器在第4步驗(yàn)證通過后,反向操作第4步,即注釋掉第24行,打開注釋第21行。至此,安裝配置完成。

          初出茅廬:

          1、給你的微信公眾號發(fā)送一條文本消息,比如hello world或者其他什么的。這個(gè)時(shí)候你應(yīng)該會收到一條“收到文本”的服務(wù)器反饋的被動響應(yīng)的消息。
          
          2、這個(gè)時(shí)候你需要先為自己鼓掌。

          流程分析:

          1、我們給微信服務(wù)器發(fā)送了一條“hello world”的文本消息。
          
          2、微信服務(wù)器收到我們的消息后,查找該公眾賬號所配置的服務(wù)器信息中的URL(如何安裝部分 - 第5步)。
          
          3、微信服務(wù)器向第二步獲取的URL發(fā)送請求,參數(shù)是微信服務(wù)器自己拼接過的XML格式。
          
          4、根目錄下的wechat.php,引入了我們的配置文件和所需的類后,進(jìn)入了類WeChat的方法run()。該類位于core/wechat.lib.php。微信的XML數(shù)據(jù)此時(shí)已經(jīng)被解析為數(shù)組,變量名為$request。
          
          5、然后,我們進(jìn)入了類WechatRequest的方法switchType(),根據(jù)不同的消息類型,給予不同的響應(yīng)。比如用戶發(fā)送文本消息和關(guān)注事件,給出的返回應(yīng)該是不同的。當(dāng)然,你要給出同樣的提示也不能說是錯(cuò)的。
          
          6、在第5步中的方法中,是一個(gè)switch,根據(jù)消息類型(此時(shí)是文本類型,微信服務(wù)器給我的是text)選擇了一個(gè)處理文本消息的方法,類WechatRequest中的方法text()。該方法的功能是發(fā)送文本消息,文本內(nèi)容是“收到文本”。
          
          7、此時(shí),我們r(jià)eturn了一個(gè)數(shù)據(jù)返回給了上層調(diào)用,層層return,就到了我們根目錄的下的唯一入口文件wechat.php,此時(shí)我們返回的數(shù)據(jù)被echo出來了。
          
          8、微信服務(wù)器拿到了輸出的數(shù)據(jù),微信服務(wù)器進(jìn)行分析和處理,將文本發(fā)送給了用戶的微信客戶端。我們就在手機(jī)上看到了微信輸出的“收到文本”。
          
          9、流程結(jié)束,這就是發(fā)送“hello world”,然后返回給用戶“收到文本”。

          牛刀小試:

          1、打開core/wechatrequest.php文件,講方法text()中的變量修改為$content = '收到文本消息'.$request['content'];
          
          2、保存并且上傳到你的服務(wù)器。
          
          3、在微信中打開你的公眾號,輸入文本消息“hello world”。見證奇跡的時(shí)刻到了。這個(gè)時(shí)候你的手機(jī)微信客戶端中現(xiàn)實(shí)的是“收到文本消息hello world”。

          函數(shù)詳解:

          一、被動給用戶發(fā)送消息。
          
              1、類簡介:用戶輸入文本、圖片、語音、音樂、視頻等消息,以及關(guān)注、取消關(guān)注,上報(bào)地理位置等事件后,服務(wù)器被動給出應(yīng)答。
          
              2、使用命名空間:use LaneWeChat\Core\ResponsePassive;
          
              3、參數(shù):  $fromusername = "誰發(fā)給你的?(用戶的openId)"  在變量$request['fromusername']中
          
                       $tousername = "你的公眾號Id";                 在變量$require['tousername']中
          
                       $mediaId = "通過上傳多媒體文件,得到的id。";
          
              4、發(fā)送文本
          
                      ResponsePassive::text($fromusername, $tousername, '文本消息內(nèi)容');
          
              5、發(fā)送圖片
          
                      ResponsePassive::image($fromusername, $tousername, $mediaId);
          
              6、發(fā)送語音
          
                      ResponsePassive::voice($fromusername, $tousername, $mediaId);
          
              7、發(fā)送視頻
          
                      ResponsePassive::video($fromusername, $tousername, $mediaId, '視頻標(biāo)題', '視頻描述');
          
              8、發(fā)送音樂
          
                      ResponsePassive::music($fromusername, $tousername, '音樂標(biāo)題', '音樂描述', '音樂鏈接', '高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂', '縮略圖的媒體id,通過上傳多媒體文件,得到的id');
          
              9、發(fā)送圖文
          
                  1)創(chuàng)建圖文消息內(nèi)容
          
                      $tuwenList = array();
          
                      $tuwenList[] = array('title'=>'標(biāo)題1', 'description'=>'描述1', 'pic_url'=>'圖片URL1', 'url'=>'點(diǎn)擊跳轉(zhuǎn)URL1');
          
                      $tuwenList[] = array('title'=>'標(biāo)題2', 'description'=>'描述2', 'pic_url'=>'圖片URL2', 'url'=>'點(diǎn)擊跳轉(zhuǎn)URL2');
          
                  2)構(gòu)建圖文消息格式
          
                      $itemList = array();
          
                      foreach($tuwenList as $tuwen){
          
                          $itemList[] = ResponsePassive::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']);
          
                      }
          
                  3)發(fā)送圖文消息
          
                      ResponsePassive::news($fromusername, $tousername, $itemList);
          
          
          
          
          二、AccessToken授權(quán)。
          
              1、類簡介:除了被動相應(yīng)用戶之外,在主動給用戶發(fā)送消息,用戶組管理等高級操作,是需要AccessToken授權(quán)的,我們調(diào)用一個(gè)URL給微信服務(wù)器,微信服務(wù)器會返回給我們一個(gè)散列字符串,在高級操作的時(shí)候需要將此串以參數(shù)的形式發(fā)送。散列字符串10分鐘內(nèi)有效,過期需要重新獲取,獲取新的后之前的全部失效。
          
              2、使用命名空間:use LaneWeChat\Core\AccessToken;
          
              3、參數(shù):無
          
              4、獲取AccessToken
          
                  AccessToken::getAccessToken(); 該調(diào)用會返回微信服務(wù)器散列后的AccessToken字符串。
          
              5、溫馨提示
          
                  如果暫且用不到此功能,請?zhí)^。最后來看這里!
          
              6、功能補(bǔ)充
          
                  有一個(gè)地方需要用戶自行完善,根據(jù)介紹我們已經(jīng)知道了,獲取AccessToken只有10分鐘的有效期,過期需要重新獲取。因此,我們需要存儲這個(gè)AccessToken。
          
                  由于大家的存儲方式各不相同,有Mysql的,有Redis的,有MongoDB的,還有Session的。所以這里我講存儲和讀取給留空了。
          
                  流程:AccessToken類,public方法只有一個(gè),就是getAccessToken()。這個(gè)方法會調(diào)用一個(gè)私有方法_checkAccessToken()來檢測AccessToken是否存在并且是否過期,如果不存在或過期,則調(diào)用私有方法_getAccessToken()
          
                  完善步驟:
          
                  1)、打開core/accesstoken.lib.php文件。
          
                  2)、私有方法_getAccessToken()的倒數(shù)第二行(return是倒數(shù)第一行),在這個(gè)地方,請講變量$accessTokenJson存儲起來,變量$accessTokenJson是一個(gè)字符串。
          
                  3)、私有方法_checkAccessToken()的第一行就是讀取操作(有一行偽代碼$accessToken = YourDatabase::get('access_token');),將剛才第二步的存儲的東西給讀出來,并且賦值給$accessToken。
          
                  4)、在第二步的存儲,第三部的讀取的時(shí)候,請不要修改數(shù)據(jù),僅僅完善一個(gè)讀和存的操作就可以了。
          
          
          
          
          三、主動給用戶發(fā)送消息。
          
              1、類簡介:用戶輸入文本、圖片、語音、音樂、視頻等消息,以及關(guān)注、取消關(guān)注,上報(bào)地理位置等事件后,服務(wù)器被動給出應(yīng)答。
          
              2、使用命名空間:use LaneWeChat\Core\ResponsePassive;
          
              3、參數(shù)  $tousername = "你的公眾號Id";                 在變量$require['tousername']中
          
                      $mediaId = "通過上傳多媒體文件,得到的id。";
          
              4、發(fā)送文本內(nèi)容
          
              ResponseInitiative::text($tousername, '文本消息內(nèi)容');
          
              5、發(fā)送圖片
          
              ResponseInitiative::image($tousername, $mediaId);
          
              6、發(fā)送語音
          
              ResponseInitiative::voice($tousername, $mediaId);
          
              7、發(fā)送視頻
          
              ResponseInitiative::video($tousername, $mediaId, '視頻描述', '視頻標(biāo)題');
          
              8、發(fā)送地理位置
          
              ResponseInitiative::music($tousername, '音樂標(biāo)題', '音樂描述', '音樂鏈接', '高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂', '縮略圖的媒體id,通過上傳多媒體文件,得到的id');
          
              9、發(fā)送圖文消息
          
                  1)創(chuàng)建圖文消息內(nèi)容
          
                      $tuwenList = array();
          
                      $tuwenList[] = array('title'=>'標(biāo)題1', 'description'=>'描述1', 'pic_url'=>'圖片URL1', 'url'=>'點(diǎn)擊跳轉(zhuǎn)URL1');
          
                      $tuwenList[] = array('title'=>'標(biāo)題2', 'description'=>'描述2', 'pic_url'=>'圖片URL2', 'url'=>'點(diǎn)擊跳轉(zhuǎn)URL2');
          
                  2)構(gòu)建圖文消息格式
          
                      $itemList = array();
          
                      foreach($tuwenList as $tuwen){
          
                          $itemList[] = ResponseInitiative::newsItem($tuwen['title'], $tuwen['description'], $tuwen['pic_url'], $tuwen['url']);
          
                      }
          
                  3)發(fā)送圖文消息
          
                      ResponseInitiative::news($tousername, $itemList);
          
          
          
          
          四、用戶及用戶組管理。
          
              1、類簡介:獲取粉絲列表,創(chuàng)建\修改用戶組,講用戶添加\移除到用戶組。
          
              2、使用命名空間:use LaneWeChat\Core\UserManage;
          
              3、參數(shù)  $openId = '用戶和微信公眾號的唯一ID';           在變量$require['openid']中
          
                      $mediaId = "通過上傳多媒體文件,得到的id。";
          
                      $groupId = '分組ID';                         在添加新分組、獲取分組列表的時(shí)候可以得到
          
              4、分組管理 - 創(chuàng)建分組
          
                  UserManage::createGroup('分組名');
          
              5、分組管理 - //獲取分組列表
          
                  UserManage::getGroupList();
          
              6、分組管理 - 查詢用戶所在分組
          
                  UserManage::getGroupByOpenId($openId);
          
              7、分組管理 - 修改分組名
          
                  UserManage::editGroupName($groupId, '新的組名');
          
              8、分組管理 - 移動用戶分組
          
                  UserManage::editUserGroup($openId, $groupId);
          
              9、用戶管理 - 獲取用戶基本信息
          
                  UserManage::getUserInfo($openId);
          
              10、用戶管理 - 獲取關(guān)注者列表
          
                  UserManage::getFansList($next_openId='');
          
              11、用戶管理 - 獲取網(wǎng)絡(luò)狀態(tài)
          
                  UserManage::getNetworkState();
          
          
          
          
          五、網(wǎng)頁授權(quán)。
          
              1、類簡介:在網(wǎng)頁中獲取來訪用戶的數(shù)據(jù)。
          
              2、使用命名空間:use LaneWeChat\Core\WeChatOAuth;
          
              3、參數(shù)  $openId = '用戶和微信公眾號的唯一ID';           在變量$require['openid']中
          
                      $mediaId = "通過上傳多媒體文件,得到的id。";
          
                      $groupId = '分組ID';                         在添加新分組、獲取分組列表的時(shí)候可以得到
          
              4、獲取CODE。
          
                  參數(shù):$scope:snsapi_base不彈出授權(quán)頁面,只能獲得OpenId;snsapi_userinfo彈出授權(quán)頁面,可以獲得所有信息
          
                  參數(shù):$redirect_uri:將會跳轉(zhuǎn)到redirect_uri/?code=CODE&state=STATE 通過GET方式獲取code和state。獲取CODE時(shí),發(fā)送請求和參數(shù)給微信服務(wù)器,微信服務(wù)器會處理后將跳轉(zhuǎn)到本參數(shù)指定的URL頁面
          
                  WeChatOAuth::getCode($redirect_uri, $state=1, $scope='snsapi_base');
          
              5、通過code換取網(wǎng)頁授權(quán)access_token(access_token網(wǎng)頁版)。首先請注意,這里通過code換取的網(wǎng)頁授權(quán)access_token,與基礎(chǔ)支持中的access_token不同。公眾號可通過下述接口來獲取網(wǎng)頁授權(quán)access_token。如果網(wǎng)頁授權(quán)的作用域?yàn)閟nsapi_base,則本步驟中獲取到網(wǎng)頁授權(quán)access_token的同時(shí),也獲取到了openid,snsapi_base式的網(wǎng)頁授權(quán)流程即到此為止。
          
                  參數(shù):$code getCode()獲取的code參數(shù)。$code = $_GET['code'];
          
                  WeChatOAuth::getAccessTokenAndOpenId($code);
          
          
          
          
          六、多媒體上傳下載
          
              1、類簡介:在網(wǎng)頁中獲取來訪用戶的數(shù)據(jù)。上傳的多媒體文件有格式和大小限制,如下:
          
                  * 圖片(image): 1M,支持JPG格式
          
                  * 語音(voice):2M,播放長度不超過60s,支持AMR\MP3格式
          
                  * 視頻(video):10MB,支持MP4格式
          
                  * 縮略圖(thumb):64KB,支持JPG格式
          
                  * 媒體文件在后臺保存時(shí)間為3天,即3天后media_id失效
          
              2、使用命名空間:use LaneWeChat\Core\Media;
          
              3、參數(shù)  $filename 上傳的文件的絕對路徑
          
                      $type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)
          
                      $mediaId = "通過上傳多媒體文件,得到的id。";
          
                      $groupId = '分組ID';                         在添加新分組、獲取分組列表的時(shí)候可以得到
          
              4、上傳:上傳后,微信服務(wù)器會返回一個(gè)mediaId。
          
                  Media::upload($filename, $type);
          
              5、下載:根據(jù)mediaId下載一個(gè)多媒體文件。
          
                  Media::download($mediaId);
          
          
          
          七、自定義菜單
          
              1、類簡介:添加自定義菜單。最多可以有三個(gè)一級菜單,每個(gè)一級菜單最多可以有五個(gè)菜單。一級菜單最多4個(gè)漢字,二級菜單最多7個(gè)漢字。創(chuàng)建自定義菜單后,由于微信客戶端緩存,需要24小時(shí)微信客戶端才會展現(xiàn)出來。建議測試時(shí)可以嘗試取消關(guān)注公眾賬號后再次關(guān)注,則可以看到創(chuàng)建后的效果。
          
                  摘自微信官方網(wǎng)站:目前自定義菜單接口可實(shí)現(xiàn)兩種類型按鈕,如下:
          
                  click:
          
                      用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會通過消息接口推送消息類型為event的結(jié)構(gòu)給開發(fā)者,并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過自定義的key值與用戶進(jìn)行交互;
          
                  view:
          
                      用戶點(diǎn)擊view類型按鈕后,微信客戶端將會打開開發(fā)者在按鈕中填寫的url值   (即網(wǎng)頁鏈接),達(dá)到打開網(wǎng)頁的目的,建議與網(wǎng)頁授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶的登入個(gè)人信息。
          
                  總結(jié)一下哦,就是微信的菜單分兩種,一種是view型,就是你設(shè)置一個(gè)網(wǎng)址,點(diǎn)了這個(gè)菜單之后就跳到你設(shè)置的網(wǎng)址去了。另一種就是click型,你設(shè)置一個(gè)key,然后用戶點(diǎn)擊的時(shí)候會通過本框架唯一入口wechat.php發(fā)送一個(gè)消息類型為event的請求,在wechatrequest.lib.php文件下的eventClick方法中可以使用。
          
              2、使用命名空間:use LaneWeChat\Core\Menu;
          
              3、設(shè)置菜單:是所有的菜單數(shù)據(jù)全部發(fā)送一次,可不是每新增一個(gè)只發(fā)一個(gè)菜單。
          
                  Menu::setMenu($menuList);
          
                  $menuLis 是菜單列表,結(jié)構(gòu)如下:
          
                  $menuList = array(
          
                                      array('id'=>'1', 'pid'=>'0', 'name'=>'頂級分類一', 'type'=>'', 'code'=>''),
          
                                      array('id'=>'2', 'pid'=>'1', 'name'=>'分類一子分類一', 'type'=>'2', 'code'=>'lane_wechat_menu_1_1'),
          
                                      array('id'=>'3', 'pid'=>'1', 'name'=>'分類一子分類二', 'type'=>'1', 'code'=>'http://www.lanecn.com'),
          
                                      array('id'=>'4', 'pid'=>'0', 'name'=>'頂級分類二', 'type'=>'1', 'code'=>'http://www.php.net/'),
          
                                      array('id'=>'5', 'pid'=>'0', 'name'=>'頂級分類三', 'type'=>'2', 'code'=>'lane_wechat_menu_3'),
          
                                  );
          
                  'id'是您的系統(tǒng)中對分類的唯一編號;
          
                  'pid'是該分類的上級分類,頂級分類則填寫0;
          
                  'name'是分類名稱;
          
                  'type'是菜單類型,數(shù)字1或者2,1是view類型,2是click類型,如果該分類下有子分類請務(wù)必留空;
          
                  'code'是view類型的URL或者click類型的自定義key,如果該分類下有子分類請務(wù)必留空。
          
              4、獲取微信菜單:獲取到的是已經(jīng)設(shè)置過的菜單列表,格式為Json,是微信服務(wù)器返回的原始數(shù)據(jù)。
          
                  Menu::getMenu();
          
              5、刪除微信菜單:將會刪除設(shè)置過的所有菜單(一鍵清空)。
          
                  Menu::delMenu();

          實(shí)例示范:

          1、通過網(wǎng)頁授權(quán)獲得用戶信息
          
              場景:用戶點(diǎn)擊了我的自定義菜單,或者我發(fā)送的文本消息中包含一個(gè)URL,用戶打開了我的微信公眾號的網(wǎng)頁版,我需要獲取用戶的信息。
          
              代碼:
          
              <?php
                  use LaneWeChat\Core\WeChatOAuth;
                  use LaneWeChat\Core\UserManage;
          
                  //第一步,獲取CODE
                  WeChatOAuth::getCode('http://www.lanecn.com/index.php', 1, 'snsapi_base');
                  //此時(shí)頁面跳轉(zhuǎn)到了http://www.lanecn.com/index.php,code和state在GET參數(shù)中。
                  $code = $_GET['code'];
                  //第二步,獲取access_token網(wǎng)頁版
                  $openId = WeChatOAuth::getAccessTokenAndOpenId($code);
                  //第三步,獲取用戶信息
                  $userInfo = UserManage::getUserInfo($openId['openid']);
              ?>


          瀏覽 22
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐在线国产视频 | 免费性在线视频 | 久久中文字幕7区 | 久草手机视频在线观看 | 欧美黄色免费观看 |