整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          計算機桌面任務欄窗口對話框菜單的功能,電腦下方的任務欄不顯示怎么辦 在任務欄和開始菜單屬性對話框

          電腦桌面下方什么都沒有了,任務欄沒有了怎么辦?

          方法:

          1、任務欄可以操作的情況下,在任務欄空白處右鍵,選擇“啟動任務欄管理器”,或者使用ctrl+alt+del快捷鍵,調出任務管理器。

          288a73c6be75c2e3b306b8743146a3eb.png

          2、在windows任務管理器的左上角,點擊“文件”——“新建任務(運行...)”。

          82a866bb18303e7e061b510956595d37.png

          3、在彈出創建新任務的窗口中輸入“.exe",然后點擊確定,看電腦是否出現任務欄。

          c6a2b3eeaf07d41d713ea86834ee20fd.png

          4、如果還是沒有顯示,重新在任務欄空白處,右鍵點擊,選擇“屬性”。

          5ca4f9b1e90487992dc16668a19655c6.png

          5、在任務欄中,”任務欄外觀——屏幕上的任務欄位置“進行改變一下,如原來在底部,重新設置一下在右側。

          0dcdbfc079ec6dd5c9cb417d8261ea32.png

          efbe686e0119e5e231afebd2179a2afb.png

          6、然后”確定“,看任務欄是否出在桌面的右側出現,出現代表成功恢復了,重新把任務欄位置調回來即可!如果沒有成功,最后實沒辦法,只能重啟電腦了。

          c0419805330b94efc1a1a1f874951ed1.png

          我家電腦最下方的任務欄不顯示,各種方法都試了,還是不顯示怎么辦

          方法一如下:

          1,可以先看看任務欄隱藏屬性是否開啟了,可能影響到最小化窗口顯示,先在任務欄上右鍵,選擇“屬性”。

          2298bbc336b84d937c5dd2a4ff565d5e.png

          2,進入屬性窗口后,選擇“任務欄”選項卡,看看其下的“自動隱藏任務欄”是否勾選了,如果勾選了,取消,如果沒勾選,可以先勾選上,退出,再進入,再去掉勾選試試,也許通過這樣設置,任務欄就可能恢復正常了。

          ba094335ef4c934693ccfeb690a830b8.png

          方法二如下:

          1,如果遇到任務欄不顯示最小化窗口,可以重啟電腦試試,也許經過重啟,系統短時間的抽風也許就好了。如果不想重啟電腦,也可以把資源管理器重啟一下,效果是一樣的,方法,在任務欄右鍵,選擇“啟動任務管理器”。

          f05631243281e23048a053fb926951b5.png

          電腦任務沒有了怎么辦_電腦任務欄沒有任務_電腦沒有任務欄怎么辦

          2,進入任務管理器后,選擇“進程”,找到“.exe”這個進程,右鍵,選擇“結束進程”,彈出警示框,按“結束進程”即可。

          282a4f271c6f62a4455d8e60c695a77b.png

          185e701cc3a2fcec89c1b23d1039168e.png

          3,結束資源管理器進程后,除了任務管理器窗口,桌面上其它圖標,任務欄,或者其它程序窗口,都會關閉(注意結束進程前,保存正在編輯的重要的文件資料)。這時,點擊任務管理器窗口“文件”菜單,選擇“新建任務”。

          6a92646c45daa763cb782aab2853b44c.png

          4,彈出一個創建新任務窗口,在框中輸入命令,按確定,就能重啟資源管理器。

          94611b1c77e01459b2343115e0a6edc7.png

          電腦任務欄中不顯示東西怎么辦?

          出現這種情況是由于:

          1 桌面程序.exe有問題

          2任務欄設置錯誤

          3.任務欄故障解決方法1:?有一種情況是打開的窗口任務欄不顯示,包括任務欄也看不到。但是鼠標點擊過去又能正常顯示,這是因為設置了 任務欄自動隱藏導致的。

          解決辦法:找到任務欄,右鍵。屬性。

          打開任務欄屬性,找到常規里??面的—自動隱藏任務欄選項 。把前面的那個 勾 去掉即可方法2:桌面進程異常

          如果不是上述情況,一般是由于桌面進程出錯。重啟計算機,或注銷重新登錄即可恢復正常,如果有正在進行的任務不方便重啟或注銷,可以通過下面方法重置桌面進程。

          操作步驟如下:找到任務欄,右鍵“任務管理器”如果是XP系統直接輸入 ctrl+alt+t調出任務管理器

          找到“進程”選項卡---- 找到 進程,點擊結束進程,并確定

          新建任務

          然后點擊,新建任務,在任務新建打開選項輸入 確定即可,您在查看任務欄您會發現,之前打開的窗口又正?;謴土朔椒ㄈ喝蝿諜谛迯停?/p>

          如果按照上述方法還不行,可能是電腦系統異常導致任務欄出問題了??梢缘骄W上搜索下載任務欄修復工具。(taskbar repair tool plus)任務欄修復下載之后點擊修復按鈕時殺毒軟件彈出注冊表寫入警告,請點擊允許。這是任務欄修復工具向注冊表寫入自啟動消息。?

          電腦桌面下面工具欄不見了怎么辦

          由操作失誤引起的任務欄消失不見該怎么辦?相應的解決方法:

          1、按鍵盤上的F11鍵,看是否恢復顯示任務欄

          電腦任務沒有了怎么辦_電腦沒有任務欄怎么辦_電腦任務欄沒有任務

          2、按windows鍵(Ctrl和Alt中間那個鍵)→顯示【開始】菜單,在彈出的空白處單擊鼠標右鍵,點擊【屬性】→在彈出的屬性窗口中選擇【任務欄】→把【自動隱藏任務欄】方框中的勾去掉,同時選擇【鎖定任務欄】。

          70c24cb07abf078a2cfd651b93e4b909.png

          拓展資料

          由系統沒有正常加載成功引起的任務欄消失不見該怎么辦?相應的解決方法:

          按“Ctrl+Alt+Del”組合鍵打開任務管理器→在彈出的窗口中選擇【文件】→選擇【新建任務】,輸入【.exe】,按【確定】即可。

          由電腦中毒引起的系統任務欄消失不見該怎么辦?相應的解決方法:

          安裝或更新360安全衛士、金山毒霸等免費的殺毒軟件。這些軟件可以查殺木馬,然后修復病毒木馬對系統的破壞,從而讓桌面任務欄重見天日。

          電腦屏幕下方的任務欄為什么不顯示我的QQ圖標?

          隱藏了··你通過默認熱鍵 ctrl+alt+z能夠打開QQ嗎 ? 如果可以那是因為QQ里面的設置問題??!你打開 QQ點你自己的圖像,在彈出的框左下角有個系統設置,點擊后在主板設置那,把在任務欄通知區域顯示QQ圖標的那個 復選框 打上鉤就OK了。

          電腦屏幕最下方的任務欄不見了該怎么辦?

          第一種方法:

          按windows健(位于ctrl和alt中間),顯示出開始菜單,在空白處單擊右鍵,點擊“屬性',打開“任務欄和開始菜單屬性”,在任務欄中選中“自動隱藏任務欄”,應用后再取消選擇。同時選擇“鎖定任務欄”。

          1fa52f83324bb2989c8814bef2ca1315.png

          第二種方法:

          系統沒有正常加載成功,請“ctrl+alt+del'打開任務管理器,點擊文件,新建任務,輸入.exe,確定即可。

          7b8f81d2cc1af0b1bd4f35323f179978.png

          電腦下面的任務欄不見了怎么辦

          xp系統下解決任務欄不見了的方法首先,你鼠標放在之前任務欄的位置,看他是否會自己出來,能自動出來就是設置了自動隱藏了

          .打開“我的電腦>控制面板>任務欄和開始菜單”,在“任務欄和開始菜單屬性”對話框中,點“任務欄”標簽,將“自動隱藏任務欄”選項前面的小勾去掉,再點“確定”。

          如果你連桌面都沒有那就是資源管理器沒打開,Ctrl+Alt+Del,在【文件】中【新建任務】中添加.exe

          電腦屏幕下方任務欄不顯示怎么辦

          按下 Ctrl+Alt+Del 鍵,打開任務管理器->"進程"選項卡->找到 .exe ->點結束進程->點“文件”->在新建任務中輸入“.exe ”,再點“確定”。

          微信公眾號開發之使用服務號的模板消息實現每日提醒通知功能

          本文主要內容:

          1. 項目簡介

          靈感來源于學校的 每日健康日報,要求使用微信小程序進行每日健康打卡。所以此項目的功能類似于 QQ群機器人,或者是 每日鬧鐘。

          功能描述:

          用戶訪問給定的頁面,進行 授權登錄 ,然后確認自己的身份(本科生或研究生),并 開啟通知 ,即可每天在約定時間收到微信服務號的消息提醒。當然,用戶可以自定義每日通知的時間,也可以隨時開啟或關閉每日通知。

          特點對比 2. 項目截圖

          圖:項目演示截圖

          左圖:用戶訂閱的頁面,中圖:用戶修改通知時間的頁面,右圖:用戶收到的消息提醒

          3. 開發準備 3.1 開發工具

          1、編碼工具:用于項目開發。如果使用 Java 實現,可使用 IDEA,如果使用 PHP 開發,可使用 ;

          2、運行工具:用于本地測試。如果是PHP開發,可選擇作為PHP項目的運行部署環境;

          3、測試工具:只能使用 微信開發者工具 ,開發模式選擇 公眾號網頁調試 。

          微信開發者工具下載地址:

          因為涉及到微信授權登錄功能,所以測試工具必須使用 微信開發者工具,而普通瀏覽器無法實現該功能。

          微信開發者工具的使用和調試方法,與普通瀏覽器一致。

          圖:微信開發者工具截圖

          3.2 環境支持

          1、任意域名一枚,需要開啟SSL(即https訪問);

          2、微信服務號一個,必須通過認證;

          3、具有外網IP的服務器一臺。

          如果僅僅是學習技術,滿足前兩項即可。如果項目需要上線,上述三者必不可少。

          對于第2條,沒有服務號,也可以在微信開放平臺 中創建網站應用。不過微信開放平臺同樣需要企業認證。

          在上述環境均滿足的情況下,接下來需要對微信服務號進行一些配置。主要有:

          1、獲取公眾號開發信息:

          公眾號的開發信息主要是 開發者ID(AppID) 和 開發者密碼()。

          某些接口必須使用開發者ID和開發者密碼才能進行調用請求。

          獲取路徑是:微信公眾號后臺 → 開發 → 基本配置。

          2、設置IP白名單

          只有IP白名單中的IP地址才可以調用 獲取接口,其中是進行其他操作,如發送消息模板等的必備參數。

          圖:獲取開發信息與設置IP

          圖:查看與修改IP白名單

          3、配置域名

          配置域名的頁面訪問路徑是:公眾號后臺 → 設置 → 公眾號設置 → 功能設置。

          需要配置的域名主要有三個:

          ① 業務域名

          設置業務域名后,在微信內訪問該域名下頁面時,不會被重新排版。用戶在該域名上進行輸入時,不出現安全提示。比如在微信內打開網頁,輸入表單的時候,不會出現“請勿輸入QQ密碼”等安全提示。

          ② JS接口安全域名

          設置JS接口安全域名后,公眾號開發者可在該域名下調用微信開放的JS接口。比如前文中的的獲取,需要使用此域名。

          ③ 網頁授權域名

          用戶在網頁授權頁同意授權給公眾號后,微信會將授權數據傳給一個回調頁面,回調頁面需在此域名下,以確保安全可靠。

          圖:域名配置頁面

          4、添加開發者

          只有已添加的開發者,才可以使用web開發者工具進行對應公眾號的開發和調試。

          添加開發者頁面的訪問路徑是:微信公眾號后臺 → 開發 → 開發者工具 → web開發者工具。

          圖:添加web開發者

          5、添加模板

          在添加功能插件模塊中,添加模板消息功能

          圖:開啟模板消息

          然后在模板庫中,搜索合適的模板,進行添加:

          圖:添加模板消息

          其中模板ID是開發用到的參數。

          4. 官方參考文檔解讀

          關于微信公眾號的開發技術,及其實現路線,在官網中均有介紹。

          官方文檔:

          打開官方開發文檔,第一單元標題為開發前必讀,開發者規范和全局返回碼說明章節還是有必要讀一讀的。

          開發時,不能違反微信的相關規范,否則容易被封號,然后全局返回碼可以幫助快速定位問題所在。

          圖:開發者文檔

          4.1 網頁授權登錄解讀

          打開官方開發文檔,第5章微信網頁開發中,第2節即為網頁授權的參考文檔。

          直達鏈接:

          該章節的目錄之前,有一段關于網頁授權的一些說明。

          第一點關于網頁授權回調域名的說明,即前文中關于域名的配置。

          第二點關于網頁授權的兩種scope的區別說明,主要說明的是兩種授權模式,一種是靜默登錄授權形式,這種形式只能獲取到用戶的OpenID,另一種是獲取用戶基本信息的形式,這種形式會彈窗,需要用戶手動點擊登錄。兩種實現方式,主要是修改登錄鏈接中的scope參數的值。后文詳述。

          第三點關于網頁授權和普通的區別,可參考文檔。其實主要說明的是網頁授權的安全性更高,必須通過code來獲取,而且不同code獲取的不同,每一個有效期2小時(7200秒),每個在這2小時內,只對同一個用戶有效。而普通(即基礎支持中的“獲取”接口獲取到的)可以直接獲取,不同場景可重復使用,有效期也為2小時,過時需要刷新。

          具體而言,網頁授權流程分為四步:

          1、引導用戶進入授權頁面同意授權,獲取code

          2、通過code換取網頁授權(與基礎支持中的不同)

          3、如果需要,開發者可以刷新網頁授權,避免過期

          4、通過網頁授權和openid獲取用戶基本信息(支持UnionID機制)

          1. 獲取code

          首先需要使用戶訪問如下鏈接,才能進行登錄:

          #

          該鏈接中,大寫字母標識的字段,需要進行替換(下同)。

          上述鏈接中的各個參數詳細說明如下:

          參數是否必須說明

          appid

          公眾號的唯一標識

          授權后重定向的回調鏈接地址, 請使用 對鏈接進行處理

          返回類型,只能填寫code

          scope

          應用授權作用域,只能為 (不彈出授權頁面,直接跳轉,只能獲取用戶openid)或(彈出授權頁面,可通過openid拿到昵稱、性別、所在地。并且, 即使在未關注的情況下,只要用戶授權,也能獲取其信息 )

          state

          重定向后會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節

          #

          無論直接打開還是做頁面302重定向時候,必須帶此參數

          用戶確定登錄后,即可在授權后重定向的回調鏈接地址中獲取到code,格式如下:

          /?code=CODE&state=STATE

          這里的CODE是接下來換取的必須參數,而STATE是開發者自定義的其他信息。

          2. 換取

          上面獲取到了code,接下來需要使用這個code來換取。

          請求鏈接如下(GET方式):

          上述鏈接中的各個參數詳細說明如下:

          參數是否必須說明

          appid

          公眾號的唯一標識、開發者ID

          secret

          公眾號的、開發者密碼

          code

          填寫第一步獲取的code參數

          只能為:

          請求成功后,返回的JSON數據包格式如下:

          {
            "access_token":"ACCESS_TOKEN",
            "expires_in":7200,
            "refresh_token":"REFRESH_TOKEN",
            "openid":"OPENID",
            "scope":"SCOPE" 
          }
          

          關于該JSON數據包的各個字段說明如下:

          參數說明

          網頁授權接口調用憑證,注意:此與基礎支持的不同

          接口調用憑證超時時間,單位(秒)

          用戶刷新,有效期30天。當超時后,可以使用進行刷新。

          openid

          用戶唯一標識,請注意,在未關注公眾號時,用戶訪問公眾號的網頁,也會產生一個用戶和公眾號唯一的OpenID

          scope

          用戶授權的作用域,使用逗號(,)分隔

          下面是可選操作,一般用不到:

          使用獲取的鏈接如下(GET方式):

          上述鏈接中的各個參數詳細說明如下:

          參數是否必須說明

          appid

          公眾號的唯一標識

          填寫為

          填寫通過獲取到的參數

          正確返回的JSON格式和上面的一致。

          一些說明:

          執行到這里,我們已經拿到了用戶的OpenID。如果僅僅做用戶唯一性校驗,至此結束即可。同樣,對于發送模板消息,也只需要用戶的OpenID。

          3. 獲取用戶信息

          如果網頁授權作用域為 ,則此時開發者可以通過 和 openid 拉取用戶信息了。

          請求鏈接如下(GET方式、需使用https協議):

          上述鏈接的參數說明如下:

          參數描述

          網頁授權接口調用憑證,即前面步驟獲取到的。

          openid

          用戶的唯一標識

          lang

          返回國家地區語言版本,zh_CN 簡體,zh_TW 繁體,en 英語

          請求成功后返回的JSON數據包格式如下:

          {   
            "openid":" OPENID",
            "nickname": NICKNAME,
            "sex":"1",
            "province":"PROVINCE",
            "city":"CITY",
            "country":"COUNTRY",
            "headimgurl":       "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
            "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
            "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
          }
          

          上述JSON數據包的參數詳細說明如下:

          參數描述

          openid

          用戶的唯一標識

          用戶昵稱

          sex

          用戶的性別,值為1時是男性,值為2時是女性,值為0時是未知

          用戶個人資料填寫的省份

          city

          普通用戶個人資料填寫的城市

          country

          國家,如中國為CN

          用戶頭像,最后一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項為空。若用戶更換頭像,原有頭像URL將失效。

          用戶特權信息,json 數組,如微信沃卡用戶為()

          unionid

          只有在用戶將公眾號綁定到微信開放平臺帳號后,才會出現該字段。

          附:檢驗授權憑證()是否有效

          請求鏈接(GET方法、需使用https協議):

          上述鏈接的參數說明如下:

          參數描述

          網頁授權接口調用憑證,注意:此與基礎支持的不同

          openid

          用戶的唯一標識

          正確的JSON數據包返回結果如下:

          { "errcode":0,"errmsg":"ok"}
          

          錯誤時的JSON返回示例:

          { "errcode":40003,"errmsg":"invalid openid"}
          

          使用該方法可以檢測是否過期,以保證項目的高可用性。

          4.2 模板消息推送解讀

          打開官方開發文檔,第4章 消息管理 中,第7節即為 模板消息接口 的參考文檔。

          直達鏈接:

          在官方文檔中,該模塊很大篇幅所敘述的內容,是針對第三方微信服務商,所以有一些是個人開發者用不到的。

          總結模板消息推送的實際過程,主要流程如下:

          1. 獲取基礎

          請求鏈接如下(GET方式):

          該鏈接中的參數詳細說明如下:

          參數是否必須說明

          獲取填寫

          appid

          第三方用戶唯一憑證

          secret

          第三方用戶唯一憑證密鑰,即

          請求成功返回的JSON數據包格式如下:

          {"access_token":"ACCESS_TOKEN","expires_in":7200}
          

          JSON數據包參數說明:

          參數說明

          獲取到的憑證

          憑證有效時間,單位:秒

          2. 發送消息模板

          請求鏈接如下(POST方式):

          該鏈接中只需要 一個參數,即第一步獲取到的 。

          POST數據包格式為JSON格式,示例如下:

           {
                     "touser":"OPENID",
                     "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
                     "url":"http://weixin.qq.com/download",  
                     "miniprogram":{
                       "appid":"xiaochengxuappid12345",
                       "pagepath":"pages/index?foo=bar"
                     },          
                     "data":{
                             "first": {
                                 "value":"恭喜你購買成功!",
                                 "color":"#173177"
                             },
          

          微信公共號平臺開發文檔_微信官方開發文檔_微信公眾開發平臺文檔

          "keyword1":{ "value":"巧克力", "color":"#173177" }, "keyword2": { "value":"39.8元", "color":"#173177" }, "keyword3": { "value":"2014年9月22日", "color":"#173177" }, "remark":{ "value":"歡迎再次購買!", "color":"#173177" } } }

          該JSON數據包中的各個參數詳細說明如下:

          參數是否必填說明

          touser

          接收者openid

          模板ID,前文配置中添加模板消息后獲得的一串字符

          url

          模板跳轉鏈接(海外帳號沒有跳轉能力)

          跳小程序所需數據,不需跳小程序可不用傳該數據。當鏈接和小程序都存在時,優先跳轉小程序。

          appid

          所需跳轉到的小程序appid(該小程序appid必須與發模板消息的公眾號是綁定關聯關系,暫不支持小游戲)

          所需跳轉到小程序的具體頁面路徑,支持帶參數,(示例pages/index?foo=bar),要求該小程序已發布,暫不支持小游戲

          data

          模板數據。這里的數據個數,需要與消息模板中的參數對應,如下圖所示。

          color

          模板內容字體顏色,不填默認為黑色

          data字段個數示例

          請求成功后,返回的JSON數據包格式如下所示:

           {
              "errcode":0,
               "errmsg":"ok",
               "msgid":200228332
            }
          

          這時,用戶手機微信將收到對應的提醒。

          行文至此,講述的主要是授權登錄和發送模板消息的大致實現流程。

          下文,將結合實際的項目,對上述功能的實現流程,以項目源碼的形式,進行更加詳細的演示。

          5. 網頁授權登錄實現(PHP為例) 5.1 工具類GetWX

          該工具類的主要功能是根據微信授權登錄的實現流程,進行鏈接請求和數據獲取。

          
          /**
           * 獲取微信用戶信息
           */
          class GetWX
          {
              //公眾號的開發信息
              private $appid = 'APPID';
              private $appsecret = 'APPSECERT';
              /**
               * 功能:用戶授權并獲取code
               *
               * @param $callback
               */
              public function get_code($callback)
              {
                  $appid = $this->appid;
                  $scope = 'snsapi_userinfo';
                  $state = md5(uniqid(rand(), TRUE));//唯一ID標識符絕對不會重復
                  $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($callback) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
                  header("Location:$url");
              }
              /**
               * 功能:通過code獲取access_token
               *
               * @param $code
               * @return mixed
               */
              public function get_access_token($code)
              {
                  $appid = $this->appid;
                  $appsecret = $this->appsecret;
                  $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';
                  $data = json_decode(file_get_contents($url));//返回的json數組轉換成array數組
                  return $data;
              }
              /**
               * 功能:使用access_token獲取用戶信息
               *
               * @param $access_token
               * @param $openid
               * @return mixed
               */
              public function get_user_info($access_token, $openid)
              {
                  $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';
                  $data = json_decode(file_get_contents($url));//返回的json數組轉換成array數組
                  return $data;
              }
          }
          ?>
          

          關于該工具類的具體實現方法不唯一。后文中有第二種完整的示例。

          5.2 獲取code

          登錄回調頁面(login.php)的源碼如下:

          
          include 'getWX.php';
          $getWX = new GetWX();
          //如果沒有GET到code,則執行登錄操作
          if (!isset($_GET['code'])) {
              //微信服務器回調url,這里是本頁url
              $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
              $callback = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
              //獲取code
              $getWX->get_code($callback);
          } //GET到了code,可以執行后續操作
          else {
          }
          

          如上源碼所示,這時訪問,執行到if語句處,判斷鏈接中沒有code這個參數,所以獲取了當前鏈接的URL地址(參數),并將其交給方法,該方法將構造登錄鏈接,并前往該頁面,然后彈出登錄授權頁面,如下所示:

          登錄授權頁面

          用戶點擊 同意 之后,返回到$鏈接。這時,鏈接中攜帶code參數,以及開發者自定義的state參數。如下圖所示:

          image-20200905222754206

          我們暫時用到的是code參數。

          5.3 換取

          接下來,使用該 code換取,繼續完善login.php代碼,具體如下:

          
          include 'getWX.php';
          $getWX = new GetWX();
          //如果沒有GET到code,則執行登錄操作
          if (!isset($_GET['code'])) {
              //微信服務器回調url,這里是本頁url
              $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
              $callback = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
              //獲取code
              $getWX->get_code($callback);
          } //GET到了code,可以執行后續操作
          else {
              //從鏈接中拿code
              $code = $_GET['code'];
              //獲取網頁授權access_token和用戶openid
              $data = $getWX->get_access_token($code);
              //測試輸出
              echo 'access_token:' . $data->access_token . '
          '
          ; echo 'expires_in:' . $data->expires_in . '
          '
          ; echo 'refresh_token:' . $data->refresh_token . '
          '
          ; echo 'openid:' . $data->openid . '
          '
          ; echo 'scope:' . $data->scope . '
          '
          ; }

          輸出的信息如下:

          獲取access_token輸出結果

          5.4 獲取用戶信息

          上面拿到了 和 OpenID,接下來可以使用這兩個參數來獲取用戶的基本信息。

          繼續完善login.php,如下:

          
          include 'getWX.php';
          $getWX = new GetWX();
          //如果沒有GET到code,則執行登錄操作
          if (!isset($_GET['code'])) {
              //微信服務器回調url,這里是本頁url
              $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
              $callback = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
              //獲取code
              $getWX->get_code($callback);
          } //GET到了code,可以執行后續操作
          else {
              //從鏈接中拿code
              $code = $_GET['code'];
              //獲取網頁授權access_token和用戶openid
              $data = $getWX->get_access_token($code);
              //獲取微信用戶信息
              $userInfo = $getWX->get_user_info($data->access_token, $data->openid);
              //測試輸出:
              echo 'openid:' . $userInfo->openid . '
          '
          ; echo 'nickname:' . $userInfo->nickname . '
          '
          ; echo 'sex:' . $userInfo->sex . '
          '
          ; echo 'province:' . $userInfo->province . '
          '
          ; echo 'city:' . $userInfo->city . '
          '
          ; echo 'country:' . $userInfo->country . '
          '
          ; echo 'headimgurl:' . $userInfo->headimgurl . '
          '
          ; }

          執行結果如下圖所示:

          獲取用戶信息結果圖

          這時,我們就拿到了用戶的基本信息,之后就可以將這些基本信息保存到數據庫,用戶ID等可以保存到session或者cookie中,等等,進行各種其他操作。

          5.5 另一種完整的示例

          工具類:

          
          /**
           * 獲取微信用戶信息
           * 本源碼來自互聯網
           */
          class GetWxUser
          {
              private $appid = '';
              private $appsecret = '';
              /**
               * 1、獲取微信用戶信息,判斷有沒有code,有使用code換取access_token,沒有去獲取code。
               * @return array 微信用戶信息數組
               */
              public function get_user_all()
              {
                  if (!isset($_GET['code'])) {//沒有code,去微信接口獲取code碼
                      //微信服務器回調url,這里是本頁url
                      $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
                      $callback = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
                      //獲取code
                      $this->get_code($callback);
                  } else {//獲取code后跳轉回來到這里了
                      $code = $_GET['code'];
                      $data = $this->get_access_token($code);//獲取網頁授權access_token和用戶openid
                      $userInfo = $this->get_user_info($data['access_token'], $data['openid']);//獲取微信用戶信息
                      return $userInfo;
                  }
              }
              /**
               * 2、用戶授權并獲取code
               * @param string $callback 微信服務器回調鏈接url
               */
              public function get_code($callback)
              {
                  $appid = $this->appid;
                  $scope = 'snsapi_userinfo';
                  $state = md5(uniqid(rand(), TRUE));//唯一ID標識符絕對不會重復
                  $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($callback) . '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
                  header("Location:$url");
          

          微信官方開發文檔_微信公眾開發平臺文檔_微信公共號平臺開發文檔

          } /** * 3、使用code換取access_token * @param string 用于換取access_token的code,微信提供 * @return array access_token和用戶openid數組 */ public function get_access_token($code) { $appid = $this->appid; $appsecret = $this->appsecret; $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code'; $user = json_decode(file_get_contents($url)); if (isset($user->errcode)) { echo 'error:' . $user->errcode . '
          msg :'
          . $user->errmsg; exit; } $data = json_decode(json_encode($user), true);//返回的json數組轉換成array數組 return $data; } /** * 4、使用access_token獲取用戶信息 * @param string access_token * @param string 用戶的openid * @return array 用戶信息數組 */ public function get_user_info($access_token, $openid) { $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN'; $user = json_decode(file_get_contents($url)); if (isset($user->errcode)) { echo 'error:' . $user->errcode . '
          msg :'
          . $user->errmsg; exit; } $data = json_decode(json_encode($user), true);//返回的json數組轉換成array數組 return $data; } } ?>

          登錄頁login.php:

          
          header("Content-Type: text/html;charset=utf-8");
          //設置時區
          date_default_timezone_set('Asia/Chongqing');
          include 'getWXUser.php';
          $getWxUser = new GetWxUser();
          //主頁的URL
          $homeUrl = 'https://mzxy.cxhit.cn';
          //沒有code,去微信接口獲取code碼
          if (!isset($_GET['code'])) {
              //微信服務器回調url,這里是本頁url
              $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
              $callback = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
              $getWxUser->get_code($callback);
          } //獲取code后跳轉回來到這里了
          else {
              $code = $_GET['code'];
              //獲取網頁授權access_token和用戶openid
              $data = $getWxUser->get_access_token($code);
              //獲取微信用戶信息(數組)
              $userInfo = $getWxUser->get_user_info($data['access_token'], $data['openid']);
              //保存到數據庫
              if ($userInfo['openid'] != '') {
                  saveUserInfo($userInfo['openid'], $userInfo['nickname'], $userInfo['sex'], $userInfo['province'], $userInfo['city'], $userInfo['country'], $userInfo['headimgurl']);
              }
              //保存到cookie里
              setcookie('openid', $userInfo['openid'], time() + 3600 * 24 * 30, "/");
              //返回主頁
              header("Location:" . $homeUrl);
          }
          ?>
          

          6. 模板消息推送實現(PHP為例) 6.1 官方JSSDK文檔(PHP)

          該SDK實現了各種參數的獲取,源碼如下:

          
          class JSSDK
          {
              private $appId;
              private $appSecret;
              public function __construct($appId, $appSecret)
              {
                  $this->appId = $appId;
                  $this->appSecret = $appSecret;
              }
              public function getSignPackage()
              {
                  $jsapiTicket = $this->getJsApiTicket();
                  // 注意 URL 一定要動態獲取,不能 hardcode.
                  $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
                  $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
                  $timestamp = time();
                  $nonceStr = $this->createNonceStr();
                  // 這里參數的順序要按照 key 值 ASCII 碼升序排序
                  $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
                  $signature = sha1($string);
                  $signPackage = array(
                      "appId" => $this->appId,
                      "nonceStr" => $nonceStr,
                      "timestamp" => $timestamp,
                      "url" => $url,
                      "signature" => $signature,
                      "rawString" => $string
                  );
                  return $signPackage;
              }
              private function createNonceStr($length = 16)
              {
                  $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                  $str = "";
                  for ($i = 0; $i < $length; $i++) {
                      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
                  }
                  return $str;
              }
              private function getJsApiTicket()
              {
                  // jsapi_ticket 應該全局存儲與更新,以下代碼以寫入到文件中做示例
                  $data = json_decode($this->get_php_file("jsapi_ticket.php"));
                  if ($data->expire_time < time()) {
                      $accessToken = $this->getAccessToken();
                      // 如果是企業號用以下 URL 獲取 ticket
                      // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
                      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
                      $res = json_decode($this->httpGet($url));
                      $ticket = $res->ticket;
                      if ($ticket) {
                          $data->expire_time = time() + 7000;
                          $data->jsapi_ticket = $ticket;
                          $this->set_php_file("jsapi_ticket.php", json_encode($data));
                      }
                  } else {
                      $ticket = $data->jsapi_ticket;
                  }
                  return $ticket;
              }
              public function getAccessToken()
              {
                  // access_token 應該全局存儲與更新,以下代碼以寫入到文件中做示例
                  $data = json_decode($this->get_php_file("access_token.php"));
                  if ($data->expire_time < time()) {
                      // 如果是企業號用以下URL獲取access_token
                      // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
                      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
                      $res = json_decode($this->httpGet($url));
                      $access_token = $res->access_token;
                      if ($access_token) {
                          $data->expire_time = time() + 7000;
                          $data->access_token = $access_token;
                          $this->set_php_file("access_token.php", json_encode($data));
                      }
                  } else {
                      $access_token = $data->access_token;
                  }
                  return $access_token;
              }
              private function httpGet($url)
              {
                  $curl = curl_init();
                  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                  curl_setopt($curl, CURLOPT_TIMEOUT, 500);
                  // 為保證第三方服務器與微信服務器之間數據傳輸的安全性,所有微信接口采用https方式調用,必須使用下面2行代碼打開ssl安全校驗。
                  // 如果在部署過程中代碼在此處驗證失敗,請到 http://curl.haxx.se/ca/cacert.pem 下載新的證書判別文件。
                  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
                  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
                  curl_setopt($curl, CURLOPT_URL, $url);
                  $res = curl_exec($curl);
                  curl_close($curl);
                  return $res;
              }
              private function get_php_file($filename)
              {
                  return trim(substr(file_get_contents($filename), 15));
              }
              private function set_php_file($filename, $content)
              {
                  $fp = fopen($filename, "w");
                  fwrite($fp, "" . $content);
                  fclose($fp);
              }
          }
          

          6.2 模板消息JSON化

          這里以下面這個模板消息為實例,進行演示。模板 詳細內容 處的內容需要牢記,因為在構造JSON時,要用這些信息。

          image-20200905225255928

          然后定義一個函數,主要功能是實現發送數據的JSON格式化

          函數源碼:

          //模板消息JSON格式化
          function json_tempalte($openid, $appid, $nickname, $time)
          {
              //模板消息
              $template = array(
                  'touser' => $openid,  //用戶openid
                  'template_id' => 'XXXX', //在公眾號下配置的模板id
                  'url' => 'https://XXXX.cn', //點擊模板消息會跳轉的鏈接
                  'miniprogram' => array(
                      'appid' => $appid,
                      'pagepath' => 'pages/main/login/login?foo=bar'
                  ),
                  'data' => array(
                      'first' => array('value' => '完成今日健康日報了嗎?未完成,請盡快哦~', 'color' => "#FF0000"),
                      'keyword1' => array('value' => $nickname, 'color' => '#173177'),  //keyword需要與配置的模板消息對應
                      'keyword2' => array('value' => $time, 'color' => '#173177'),
                      'remark' => array('value' => '點擊此處前往填報。本通知由您訂閱產生,切換身份、更改通知時間及退訂管理,請訪問菜單欄『學習助手』模塊。', 'color' => '#FF0000'),
                  )
              );
              $json_template = json_encode($template);
              return $json_template;
          }
          

          這個函數返回的結果是JSON數據包。

          6.3 發送模板消息

          關鍵源碼如下:

          include("jssdk.php");
          $jssdk = new JSSDK("APPID", "APPSECRET");
          //定義消息模板JSON
          $json_template = json_tempalte('APPID', 'wxa0738e54aae84423', '拾年之璐' . '(本科生)', date("Y-m-d"));
          //獲取AccessToken
          $accessToken = $jssdk->getAccessToken();
          //POST 的鏈接
          $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $accessToken;
          //提交
          list($returnCode, $returnContent) = http_post_json($url, $json_template);
          //打印日志(JSON格式)
          echo '發送結果如下:' . $returnContent . '\n';
          


          主站蜘蛛池模板: 国产丝袜无码一区二区三区视频 | 亚洲一区二区三区在线播放| 无码人妻精品一区二区三区东京热| 日韩电影一区二区| 国产精品一区二区久久国产| 日韩中文字幕精品免费一区| 国产福利一区二区在线视频 | 亚洲AV无码一区二区二三区入口 | 国精无码欧精品亚洲一区| 精品国产福利一区二区| 亚洲av高清在线观看一区二区| 老鸭窝毛片一区二区三区| 97se色综合一区二区二区| 中文字幕日本精品一区二区三区| 日韩动漫av在线播放一区| 亚洲制服丝袜一区二区三区 | 免费无码一区二区| 一区二区三区日本电影| 毛片一区二区三区| 91精品国产一区| 中文字幕一区二区三区在线观看| 亚欧成人中文字幕一区| 一区二区三区在线观看中文字幕| 一区二区在线观看视频| 成人在线一区二区| 成人区精品人妻一区二区不卡| 麻豆一区二区免费播放网站| 国产精品无码一区二区三级| 日本中文一区二区三区亚洲| 亚洲变态另类一区二区三区| 久久精品免费一区二区三区| 国产一区二区好的精华液| 无码日韩人妻av一区免费| 好爽毛片一区二区三区四无码三飞 | 日韩精品无码一区二区三区 | 中文字幕一区二区三区乱码| 国产成人一区二区三区电影网站 | 久久精品视频一区| 欲色aV无码一区二区人妻| 亚洲毛片αv无线播放一区| 在线视频一区二区三区三区不卡|