微信公眾號(hào)開發(fā)

大家好,我是IT修真院深圳分院第6期學(xué)員,一枚正直善良的JAVA程序員。

今天給大家分享一下,修真院官網(wǎng)復(fù)盤項(xiàng)目中用到的知識(shí)點(diǎn),微信公眾號(hào)開發(fā)。

1.背景介紹

微信公眾平臺(tái)是運(yùn)營(yíng)者通過(guò)公眾號(hào)為微信用戶提供資訊和服務(wù)的平臺(tái),而公眾平臺(tái)開發(fā)接口則是提供服務(wù)的基礎(chǔ),開發(fā)者在公眾平臺(tái)網(wǎng)站中創(chuàng)建公眾號(hào)、獲取接口權(quán)限后,就可以進(jìn)行開發(fā)了

微信公眾平臺(tái)公分4大板塊:訂閱號(hào)、服務(wù)號(hào)、小程序、企業(yè)號(hào)。按照微信2016年公開課規(guī)劃,企業(yè)號(hào)后續(xù)將與企業(yè)微信合并

訂閱號(hào)和服務(wù)號(hào)均為傳統(tǒng)意義的“公眾號(hào)”,兩者開發(fā)模式完全相同,只不過(guò)服務(wù)號(hào)可以使用更多的服務(wù)接口,而訂閱號(hào)則是“閹割版”的服務(wù)號(hào)。

2.知識(shí)剖析

微信公眾號(hào)開發(fā)的實(shí)質(zhì)

微信公眾號(hào)的開發(fā),實(shí)質(zhì)上是一個(gè)只能運(yùn)行在微信內(nèi)置瀏覽器上的普通WEB項(xiàng)目,如果不在微信公眾號(hào)上從菜單進(jìn)行跳轉(zhuǎn),是不能正常打開網(wǎng)頁(yè)的,要么直接提示,要么獲取不到數(shù)據(jù)

而我們項(xiàng)目中使用到微信的功能,就是從微信公眾號(hào)的自定義菜單跳轉(zhuǎn)到我們的WEB項(xiàng)目上,然后從微信拉取微信的用戶信息,如微信昵稱、微信頭像、用戶openid,性別、地址等

微信公眾平臺(tái)接入

1、配置好服務(wù)器

2、申請(qǐng)公眾號(hào)或測(cè)試號(hào)

3、開發(fā)者基本配置

4、實(shí)現(xiàn)服務(wù)

微信服務(wù)號(hào)簡(jiǎn)單流程。

1. 基本配置接口

2. 獲取access_token,這是一個(gè)微信全局密匙,用以創(chuàng)建或刪除菜單、獲取openid等等

3. 創(chuàng)建自定義菜單,并從自定義菜單跳轉(zhuǎn)到WEB服務(wù)器

4. 獲取微信端CODE,然后使用CODE換取用戶openid

5. 使用openid拉取用戶信息

總結(jié):獲取access_token——》創(chuàng)建自定義菜單——》獲取CODE——》使用CODE獲取openid——》使用openid獲取用戶信息

3.常見(jiàn)問(wèn)題

全局access_token 和 網(wǎng)頁(yè)授權(quán)access_token的區(qū)別?

4.解決方案

關(guān)于網(wǎng)頁(yè)授權(quán)access_token和普通access_token的區(qū)別

1、微信網(wǎng)頁(yè)授權(quán)是通過(guò)OAuth2.0機(jī)制實(shí)現(xiàn)的,在用戶授權(quán)給公眾號(hào)后,公眾號(hào)可以獲取到一個(gè)網(wǎng)頁(yè)授權(quán)特有的接口調(diào)用憑證(網(wǎng)頁(yè)授權(quán)access_token),通過(guò)網(wǎng)頁(yè)授權(quán)access_token可以進(jìn)行授權(quán)后接口調(diào)用,如獲取用戶基本信息;

2、其他微信接口,需要通過(guò)基礎(chǔ)支持中的“獲取access_token”接口來(lái)獲取到的普通access_token調(diào)用。

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

為了使第三方開發(fā)者能夠?yàn)橛脩籼峁└喔袃r(jià)值的個(gè)性化服務(wù),微信公眾平臺(tái)開放了許多接口,包括自定義菜單接口、客服接口、獲取用戶信息接口、用戶分組接口、群發(fā)接口等,開發(fā)者在調(diào)用這些接口時(shí),都需要傳入一個(gè)相同的參數(shù)access_token,它是公眾賬號(hào)的全局唯一票據(jù),它是接口訪問(wèn)憑證。

access_token的有效期是7200秒(兩小時(shí)),在有效期內(nèi),可以一直使用,只有當(dāng)access_token過(guò)期時(shí),才需要再次調(diào)用接口獲取access_token。在理想情況下,一個(gè)7x24小時(shí)運(yùn)行的系統(tǒng),每天只需要獲取12次access_token,即每2小時(shí)獲取一次。如果在有效期內(nèi),再次獲取access_token,那么上一次獲取的access_token將失效。

目前,獲取access_token接口的調(diào)用頻率限制為2000次/天,如果每次發(fā)送客服消息、獲取用戶信息、群發(fā)消息之前都要先調(diào)用獲取access_token接口得到接口訪問(wèn)憑證,這顯然是不合理的,一方面會(huì)更耗時(shí)(多了一次接口調(diào)用操作),另一方面2000次/天的調(diào)用限制恐怕也不夠用。因此,在實(shí)際應(yīng)用中,我們需要將獲取到的access_token存儲(chǔ)起來(lái),然后定期調(diào)用access_token接口更新它,以保證隨時(shí)取出的access_token都是有效的。

1.如何定時(shí)獲取access_token?

在Java中,如果要定時(shí)執(zhí)行某項(xiàng)任務(wù),需要用到j(luò)ava.util.Timer類,對(duì)于喜歡使用框架的朋友,可以采用?開源的任務(wù)調(diào)度框架quartz,Spring框架也支持quartz。除此這外,還有一種方法就是啟動(dòng)一個(gè)線程,在線程的run()方法中寫一個(gè)死循環(huán),然后使用Thread.sleep()來(lái)保證線程定時(shí)執(zhí)行某項(xiàng)任務(wù)。

2.將access_token保存在哪?

對(duì)于access_token的存儲(chǔ),可以考慮存儲(chǔ)在文件、數(shù)據(jù)庫(kù)或內(nèi)存中。具體采用哪種存儲(chǔ)方式,需要根據(jù)項(xiàng)目實(shí)際情況而定。如果只有一臺(tái)服務(wù)器,直接將access_token存儲(chǔ)在內(nèi)存中是最簡(jiǎn)便有效的方式。

定期獲取并存儲(chǔ)access_token的流程為:Web服務(wù)器啟動(dòng)時(shí)就加載一個(gè)Servlet,在Servlet的init()方法中啟動(dòng)一個(gè)線程,在線程的run()方法中通過(guò)死循環(huán)+Thread.sleep()的方式定期獲取access_token,然后將獲取到的access_token保存在public static修飾的變量中。

7.參考文獻(xiàn)

官方文檔

百度

8.更多討論

1.為什么微信的API和任務(wù)的時(shí)候不一樣。

A:因?yàn)槲⑿诺膫€(gè)人信息是存儲(chǔ)在微信服務(wù)器上面的。

2.官方文檔中為什么沒(méi)有java代碼demo?

A:倒是有PHP的,畢竟最好的語(yǔ)言。java如果個(gè)人水平高,照著文檔提示直接寫一個(gè)出來(lái)。如果寫不出來(lái),只能去copy別人的了。

推薦個(gè)SDK:https://github.com/Wechat-Group/weixin-java-tools

號(hào)稱目前最好的微信SDK

3.多線程不會(huì)怎么辦?

A:new? Thread,start。就是這么簡(jiǎn)單,什么鎖?我也不懂。

感謝大家觀看

PPT:PPT

視頻:視頻

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

技能樹.IT修真院

“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開始,找個(gè)師兄,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷茫”。

這里是技能樹.IT修真院,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化,師兄1對(duì)1免費(fèi)指導(dǎo)。快來(lái)與我一起學(xué)習(xí)吧~

小禮物走一走,來(lái)簡(jiǎn)書關(guān)注我

贊賞支持

作者:blue

鏈接:

來(lái)源:簡(jiǎn)書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 古賦|外一首 廣東.蕙清 〈一〉 風(fēng)搖蕩 葉蒼蒼 波靜畫船 江上孤鶩 何日是歸年 人語(yǔ)渺 共秋煙 任他愁潮瀟湘雨 ...
    蕙清閱讀 417評(píng)論 12 12
  • 在我們的婚姻里,也會(huì)想下車走走嗎? 車停在交警大隊(duì),鹿泉。 因?yàn)橐粋€(gè)大爺拎著包從后門上車了。 公交車司機(jī)一直讓他從...
    擁人自擾之閱讀 144評(píng)論 0 0
  • 讀書足以怡情,足以傅彩,足以長(zhǎng)才。其怡情也,最見(jiàn)于獨(dú)處幽居之時(shí);其傅彩也,最見(jiàn)于高談闊論之中,其長(zhǎng)才也,最見(jiàn)...
    書卷女子閱讀 519評(píng)論 4 13
  • 說(shuō)起看書這點(diǎn)事,我要感謝父母,感謝他們工作忙碌沒(méi)有時(shí)間陪我,讓我學(xué)會(huì)用讀書來(lái)自我?jiàn)蕵?lè),感謝他們雖然不富裕卻從未拒絕...
    愛(ài)寫字的喵閱讀 272評(píng)論 0 1

友情鏈接更多精彩內(nèi)容