我們?cè)诳次⑿舑sapi開(kāi)發(fā)文檔發(fā)現(xiàn),想要使用微信jsapi不僅要綁定已備案的域名,而且還需要一大堆接口注入權(quán)限驗(yàn)證。本人感覺(jué)有點(diǎn)麻煩,但是也沒(méi)辦法,誰(shuí)讓微信這么火呢。
通過(guò)config接口注入權(quán)限驗(yàn)證配置
所有需要使用JS-SDK的頁(yè)面必須先注入配置信息,否則將無(wú)法調(diào)用(同一個(gè)url僅需調(diào)用一次,對(duì)于變化url的SPA的web app可在每次url變化時(shí)進(jìn)行調(diào)用,目前Android微信客戶端不支持pushState的H5新特性,所以使用pushState來(lái)實(shí)現(xiàn)web app的頁(yè)面會(huì)導(dǎo)致簽名失敗,此問(wèn)題會(huì)在Android6.2中修復(fù))。
上面就是微信官方文檔的說(shuō)明,本來(lái)要高高興興的去接入微信開(kāi)發(fā),這下傻眼了,特別是初學(xué)者完全蒙了,接下來(lái)我們看看微信官方文檔給的代碼示例:
wx.config({ ????debug:?true,?//?開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。 ????appId:?'',?//?必填,公眾號(hào)的唯一標(biāo)識(shí) ????timestamp:?,?//?必填,生成簽名的時(shí)間戳 ????nonceStr:?'',?//?必填,生成簽名的隨機(jī)串 ????signature:?'',//?必填,簽名,見(jiàn)附錄1 ????jsApiList:?[]?//?必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2 }); |
timestamp,nonceStr,signature,尼瑪 這三個(gè)參數(shù)什么鬼,appid尚可知道,這三個(gè)參數(shù)好吧,讓我們看附錄1,那就看附錄1吧,請(qǐng)看下面微信官方文檔的附錄1說(shuō)明
jsapi_ticket
生成簽名之前必須先了解一下jsapi_ticket,jsapi_ticket是公眾號(hào)用于調(diào)用微信JS接口的臨時(shí)票據(jù)。正常情況下,jsapi_ticket的有效期為7200秒,通過(guò)access_token來(lái)獲取。由于獲取jsapi_ticket的api調(diào)用次數(shù)非常有限,頻繁刷新jsapi_ticket會(huì)導(dǎo)致api調(diào)用受限,影響自身業(yè)務(wù),開(kāi)發(fā)者必須在自己的服務(wù)全局緩存jsapi_ticket 。
1.參考以下文檔獲取access_token(有效期7200秒,開(kāi)發(fā)者必須在自己的服務(wù)全局緩存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html
2.用第一步拿到的access_token 采用http GET方式請(qǐng)求獲得jsapi_ticket(有效期7200秒,開(kāi)發(fā)者必須在自己的服務(wù)全局緩存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
看到這里是不是蒙了,什么鬼,預(yù)先了解timestamp,nonceStr,signature,還必須獲取jsapi_ticket,算了,既然官方文檔說(shuō)要獲取jsapi_ticket那么就獲取吧,在這里呢我只展示java獲取jsapi_ticket。代碼如下:
package?com.test.util; import?java.io.BufferedReader; import?java.io.IOException; import?java.io.InputStreamReader; import?java.net.MalformedURLException; import?java.net.URL; import?java.net.URLConnection; import?net.sf.json.JSONObject; import?com.test.weixin.TestAcessToken; public?class?JsapiTicketUtil?{ ????/*** ?????*?模擬get請(qǐng)求 ?????*?@param?url ?????*?@param?charset ?????*?@param?timeout ?????*?@return ?????*/ ?????public?static?String?sendGet(String?url,?String?charset,?int?timeout) ??????{ ????????String?result?=?""; ????????try ????????{ ??????????URL?u?=?new?URL(url); ??????????try ??????????{ ????????????URLConnection?conn?=?u.openConnection(); ????????????conn.connect(); ????????????conn.setConnectTimeout(timeout); ????????????BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(conn.getInputStream(),?charset)); ????????????String?line=""; ????????????while?((line?=?in.readLine())?!=?null) ????????????{ ??????????????result?=?result?+?line; ????????????} ????????????in.close(); ??????????}?catch?(IOException?e)?{ ????????????return?result; ??????????} ????????} ????????catch?(MalformedURLException?e) ????????{ ??????????return?result; ????????} ????????return?result; ??????} ?????/*** ??????*?獲取acess_token? ??????*/ ?????public?static?String?getAccessToken(){ ????????????String?appid="你公眾號(hào)基本設(shè)置里的應(yīng)用id";//應(yīng)用ID ????????????String?appSecret="你公眾號(hào)基本設(shè)置里的應(yīng)用密鑰";//(應(yīng)用密鑰) ????????????String?url?="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+""; ????????????String?backData=TestAcessToken.sendGet(url,?"utf-8",?10000); ????????????String?accessToken?=?(String)?JSONObject.fromObject(backData).get("access_token");?? ????????????return?accessToken; ?????} ????/*** ??????*?獲取jsapiTicket ??????*?來(lái)源?www.vxzsk.com ??????*?@return ??????*/ ????public?static?String?getJSApiTicket(){? ????????//獲取token ????????String?acess_token=?JsapiTicketUtil.getAccessToken(); ????????String?urlStr?=?"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+acess_token+"&type=jsapi";?? ????????String?backData=TestAcessToken.sendGet(urlStr,?"utf-8",?10000);?? ????????String?ticket?=?(String)?JSONObject.fromObject(backData).get("ticket");?? ????????return??ticket;?? ????}?? ?????public?static?void?main(String[]?args)?{ ????????String?jsapiTicket?=?JsapiTicketUtil.getJSApiTicket(); ????????System.out.println("調(diào)用微信jsapi的憑證票為:"+jsapiTicket); ????????} } |
把上面的代碼直接復(fù)制到Eclipse或者myeclipse中只想main方法即可,但是這里有個(gè)梗?
第58行到65行這段代碼是獲取access_token的方法,因?yàn)橐@取ticket需要這個(gè)參數(shù),但是這里有兩個(gè)參數(shù)需要讀者填寫(xiě),一個(gè)是appid,另一個(gè)是appSecret,代碼的注釋已經(jīng)說(shuō)得很明白了,我在這里就不在累述。
以上是詳解微信jsapi開(kāi)發(fā)如何獲取jsapi_ticket的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

PHP是一種開(kāi)源的腳本語(yǔ)言,廣泛應(yīng)用于Web開(kāi)發(fā)和服務(wù)器端編程,尤其在微信開(kāi)發(fā)中得到了廣泛的應(yīng)用。如今,越來(lái)越多的企業(yè)和開(kāi)發(fā)者開(kāi)始使用PHP進(jìn)行微信開(kāi)發(fā),因?yàn)樗蔀榱艘豢钫嬲囊讓W(xué)易用的開(kāi)發(fā)語(yǔ)言。在微信開(kāi)發(fā)中,消息的加密和解密是一個(gè)非常重要的問(wèn)題,因?yàn)樗鼈兩婕暗綌?shù)據(jù)的安全性。對(duì)于沒(méi)有加密和解密方式的消息,黑客可以輕松獲取到其中的數(shù)據(jù),對(duì)用戶造成威脅

在微信公眾號(hào)開(kāi)發(fā)中,投票功能經(jīng)常被運(yùn)用。投票功能是讓用戶快速參與互動(dòng)的好方式,也是舉辦活動(dòng)和調(diào)查意見(jiàn)的重要工具。本文將為您介紹如何使用PHP實(shí)現(xiàn)微信投票功能。獲取微信公眾號(hào)授權(quán)首先,你需要獲取微信公眾號(hào)的授權(quán)。在微信公眾平臺(tái)上,你需要配置微信公眾號(hào)的api地址、官方賬號(hào)和公眾號(hào)對(duì)應(yīng)的token。在我們使用PHP語(yǔ)言開(kāi)發(fā)的過(guò)程中,我們需要使用微信官方提供的PH

隨著微信的普及,越來(lái)越多的企業(yè)開(kāi)始將其作為營(yíng)銷(xiāo)工具。而微信群發(fā)功能,則是企業(yè)進(jìn)行微信營(yíng)銷(xiāo)的重要手段之一。但是,如果只依靠手動(dòng)發(fā)送,對(duì)于營(yíng)銷(xiāo)人員來(lái)說(shuō)是一件極為費(fèi)時(shí)費(fèi)力的工作。所以,開(kāi)發(fā)一款微信群發(fā)工具就顯得尤為重要。本文將介紹如何使用PHP開(kāi)發(fā)微信群發(fā)工具。一、準(zhǔn)備工作開(kāi)發(fā)微信群發(fā)工具,我們需要掌握以下幾個(gè)技術(shù)點(diǎn):PHP基礎(chǔ)知識(shí)微信公眾平臺(tái)開(kāi)發(fā)開(kāi)發(fā)工具:Sub

微信是目前全球用戶規(guī)模最大的社交平臺(tái)之一,隨著移動(dòng)互聯(lián)網(wǎng)的普及,越來(lái)越多的企業(yè)開(kāi)始意識(shí)到微信營(yíng)銷(xiāo)的重要性。在進(jìn)行微信營(yíng)銷(xiāo)時(shí),客服服務(wù)是至關(guān)重要的一環(huán)。為了更好地管理客服聊天窗口,我們可以借助PHP語(yǔ)言進(jìn)行微信開(kāi)發(fā)。一、PHP微信開(kāi)發(fā)簡(jiǎn)介PHP是一種開(kāi)源的服務(wù)器端腳本語(yǔ)言,廣泛運(yùn)用于Web開(kāi)發(fā)領(lǐng)域。結(jié)合微信公眾平臺(tái)提供的開(kāi)發(fā)接口,我們可以使用PHP語(yǔ)言進(jìn)行微信

在微信公眾號(hào)開(kāi)發(fā)中,用戶標(biāo)簽管理是一個(gè)非常重要的功能,可以讓開(kāi)發(fā)者更好地了解和管理自己的用戶。本篇文章將介紹如何使用PHP實(shí)現(xiàn)微信用戶標(biāo)簽管理功能。一、獲取微信用戶openid在使用微信用戶標(biāo)簽管理功能之前,我們首先需要獲取用戶的openid。在微信公眾號(hào)開(kāi)發(fā)中,通過(guò)用戶授權(quán)的方式獲取openid是比較常見(jiàn)的做法。在用戶授權(quán)完成后,我們可以通過(guò)以下代碼獲取用

隨著微信成為了人們生活中越來(lái)越重要的一個(gè)通訊工具,其敏捷的消息傳遞功能迅速受到廣大企業(yè)和個(gè)人的青睞。對(duì)于企業(yè)而言,將微信發(fā)展為一個(gè)營(yíng)銷(xiāo)平臺(tái)已經(jīng)成為趨勢(shì),而微信開(kāi)發(fā)的重要性也逐漸凸顯。在其中,群發(fā)功能更是被廣泛使用,那么,作為PHP程序員,如何實(shí)現(xiàn)群發(fā)消息發(fā)送記錄呢?下面將為大家簡(jiǎn)單介紹一下。1.了解微信公眾號(hào)相關(guān)開(kāi)發(fā)知識(shí)在了解如何實(shí)現(xiàn)群發(fā)消息發(fā)送記錄之前,我

如何使用PHP實(shí)現(xiàn)微信公眾號(hào)開(kāi)發(fā)微信公眾號(hào)已經(jīng)成為了很多企業(yè)推廣和互動(dòng)的重要渠道,而PHP作為一種常用的Web語(yǔ)言,也可以用來(lái)進(jìn)行微信公眾號(hào)的開(kāi)發(fā)。本文將介紹一下使用PHP實(shí)現(xiàn)微信公眾號(hào)開(kāi)發(fā)的具體步驟。第一步:獲取微信公眾號(hào)的開(kāi)發(fā)者賬號(hào)在開(kāi)始微信公眾號(hào)開(kāi)發(fā)之前,需要先去申請(qǐng)一個(gè)微信公眾號(hào)的開(kāi)發(fā)者賬號(hào)。具體的注冊(cè)流程可以參見(jiàn)微信公眾平臺(tái)的官方網(wǎng)

隨著互聯(lián)網(wǎng)和移動(dòng)智能設(shè)備的發(fā)展,微信成為了社交和營(yíng)銷(xiāo)領(lǐng)域不可或缺的一部分。在這個(gè)越來(lái)越數(shù)字化的時(shí)代,如何使用PHP進(jìn)行微信開(kāi)發(fā)已經(jīng)成為了很多開(kāi)發(fā)者的關(guān)注點(diǎn)。本文主要介紹如何使用PHP進(jìn)行微信開(kāi)發(fā)的相關(guān)知識(shí)點(diǎn),以及其中的一些技巧和注意事項(xiàng)。一、開(kāi)發(fā)環(huán)境準(zhǔn)備在進(jìn)行微信開(kāi)發(fā)之前,首先需要準(zhǔn)備好相應(yīng)的開(kāi)發(fā)環(huán)境。具體來(lái)說(shuō),需要安裝PHP的運(yùn)行環(huán)境,以及微信公眾平臺(tái)提
