一、URL 和Tocken 簡介
1、想成為開發者必須要有一個公網的網路位址(URL),這個網路位址要求微信公眾平台可以存取到,網路位址的取得有多種方式:可以藉助其他平台,也可以自己租借伺服器(建議自己租一個伺服器,因為我們需要部署應用程式);總之,你要提供一個公網上的URL;
#2、Tocken(標記):Tocken可以隨便填寫一個字串,在認證的時候使用;
3、認證過程:需要開發者進行編程,所以要在開發者伺服器上部署一個應用(提供URL);當公網上的URL被微信訪問時,微信會發送過來一些數據,你的應用要把微信發送過來的數據進行加密,然後用密文和signature比較,如果相同,返回echostr給微信公眾平台,微信公眾平台進行校驗,如果正確,那麼恭喜你,你的公眾帳號成為成為開發者帳號;
二、驗證流程圖
您已經向微信公眾平台提供了URL(開發者伺服器網址址) 和Tocken,下圖是微信公眾平台認證流程;
#從上圖可以看出,主要驗證功能是在開發者伺服器這端,其中在開發者伺服器這端進行tocken,timestamp,nonce加密認證(sha1加密)的時候,tocken是開發者提供給微信公眾平台的;如果加密的結果和微信公眾平台提供的signature一樣,那麼我們就返回echostr給微信公眾平台;微信公眾平台進行echostr認證,如果通過,公眾帳號就成為了開發者
三、代碼說明
本人開發用的是python語言,如果你使用的是其他語言,邏輯結構類似,只是實現不同;
@csrf_exempt def wx_valid(request):#提供给微信公众平台的url,微信公众平台请求url时,会执行此方法 '''微信开发者验证,是GET请求;GET 和 POST 区分是认证还是发送消息(发送消息的时候是POST)''' if(request.method == 'GET'): tocken='zainanjing6tocken'#提供给微信公众平台的tocken,可以保持在数据库、文件或者直接硬编码到代码中; if tocken: timestamp = request.GET['timestamp'] nonce = request.GET['nonce'] signature = request.GET['signature'] echostr = request.GET['echostr'] arr = [tocken,timestamp,nonce] arr.sort() data = '' for s in arr : data += s sha1 = hashlib.sha1() #或hashlib.md5() sha1.update(data) _signature = sha1.hexdigest() #生成40位(sha1)或32位(md5)的十六进制字符串 if _signature == signature : return HttpResponse(echostr)#返回 echostr return HttpResponse('error')#返回 error
以上就是開發者驗證URL和Tocken邏輯流程和源碼了,下面我們就說一下整體的操作流程;
四、操作流程
1、先在開發者伺服器上部署應用,提供出URL 和Tocken,(此URL要求微信公眾平台能夠存取)
2 、把URL 和Tocken 加入微信公眾平台開發者模式後,微信公眾平台就會自動請求URL,開發者伺服器進行資料驗證(signature驗證),如果驗證通過,回傳echostr給微信公眾平台
3、如果成功成為了開發者帳號,並且公眾帳號的模式調整為開發者模式,那麼用戶給公眾帳號發送的訊息,就不是由微信公眾平台進行回復了,微信公眾平台會將訊息轉發給開發者伺服器,開發者伺服器進行訊息回覆
至此,URL 和Tocken的認證就算結束了,如果認證通過了,那麼恭喜,你的帳號已經是開發者帳號,下一步必須要做的是開發回覆用戶訊息的功能,不然用戶接收不到任何訊息;
以上是微信公眾帳號開發:URL 和 Tocken介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!