小程序模板網(wǎng)

在微信小程序中獲取微信群 ID

發(fā)布時(shí)間:2018-04-18 10:33 所屬欄目:小程序開發(fā)教程
來自公眾號(hào):知曉程序
兩種讀取方式
根據(jù)官方文檔,我們可以通過以下兩個(gè)方式,讀取到微信群 ID 的信息:
  • 當(dāng)用戶成功地將小程序頁面分享到微信群后,小程序的回調(diào)結(jié)果中可以獲取該微信群的群 ID。

  • 當(dāng)用戶從微信群中的分享入口進(jìn)入小程序時(shí),小程序可以獲取當(dāng)前微信群的群 ID。

首先,我們來聊聊用戶成功地將小程序頁面分享到微信群的情況下,如何讀取目標(biāo)微信群的 ID。
此次接口更新,控制小程序頁面右上角菜單中的「分享」按鈕顯示與消失,不再完全依賴頁面邏輯文件中是否擁有 onShareAppMessage 函數(shù)。
現(xiàn)在有兩個(gè)新的接口,可以決定小程序是否顯示分享菜單:wx.showShareMenu(顯示分享菜單)和 wx.hideShareMenu(隱藏分享菜單)。
在 wx.showShareMenu 接口中,設(shè)定 withShareTicket: true,即可在用戶分享時(shí),獲取到shareTickets。
同時(shí),在此次接口更新中,微信為小程序更新了 onShareAppMessage 接口。
原本這個(gè)接口的 return 只能接受 title、path 等控制分享卡片內(nèi)容的參數(shù)。在此次更新后,return 可以在分享成功、失敗、完成(成功和失?。┫拢瑘?zhí)行特定的回調(diào)函數(shù)。
在回調(diào)函數(shù)中,我們可以插入?yún)?shù),以便小程序?qū)⑽⑿湃盒畔魅?。小程序在檢測到用戶分享動(dòng)作之后,會(huì)將 shareTicket 帶入到這個(gè)參數(shù)中,并執(zhí)行相應(yīng)回調(diào)函數(shù)。
來看代碼:

接下來,是通過微信群進(jìn)入小程序情景下的微信群 ID 獲取。
用戶進(jìn)入小程序時(shí),小程序可以在 app 對(duì)象中的 onLaunch 生命周期函數(shù)中,獲取到進(jìn)入小程序的渠道(情景值)。
當(dāng)情景值為 1044,即通過帶 shareTicket 的微信群分享卡片進(jìn)入小程序,小程序就可以額外獲取到 shareTicket。
這一步的代碼就比較簡單了:

有了 shareTicket,我們就可以通過調(diào)用 wx.getShareInfo 函數(shù),獲取到目標(biāo)微信群(加密過后的)ID 了。

需要注意的是,如果當(dāng)前用戶未登錄(從未調(diào)用 wx.login 或 session 過期),這些接口都會(huì)出現(xiàn)調(diào)用失敗的情況。
另外,當(dāng)分享失敗或數(shù)據(jù)獲取失敗,這些函數(shù)只會(huì)調(diào)用 fail(失?。┖?nbsp;complete(完成)回調(diào),而不會(huì)調(diào)用 success(成功)回調(diào)。
建議直接使用 complete 回調(diào),并通過數(shù)據(jù)包中的錯(cuò)誤碼,判斷接口是否成功調(diào)用,以免出現(xiàn)調(diào)用失敗時(shí)小程序無相應(yīng)反應(yīng)的情況。
在電腦上調(diào)試分享接口
為了便于開發(fā),微信很貼心地在開發(fā)者工具中加入了分享接口調(diào)試功能。下面,就來告訴你,調(diào)試分享接口的具體方法。
首先是用戶的分享動(dòng)作調(diào)試。
在目標(biāo)頁面中,點(diǎn)擊右上角的「更多」按鈕,再點(diǎn)擊「轉(zhuǎn)發(fā)」。這時(shí)候,頁面會(huì)變成「發(fā)送給好友」,里面有開發(fā)者工具提供的 9 個(gè)模擬群,任君選擇。
隨意點(diǎn)擊一個(gè)群,進(jìn)行模擬分享動(dòng)作,小程序就可以獲取到模擬群的加密數(shù)據(jù)。

 
接下來,是獲取進(jìn)入小程序的微信群信息的調(diào)試方法。
點(diǎn)擊左側(cè)「編譯」按鈕下方的「自定義編譯」按鈕,在「設(shè)置應(yīng)用的進(jìn)入場景」,選擇「1044:微信群會(huì)話中的小程序消息卡片(帶 shareTicket)」。
選擇場景之后,對(duì)話框下方會(huì)多出「選擇進(jìn)入的群」。隨便選擇一個(gè)測試群,再點(diǎn)擊確定,你就可以開始調(diào)試了。

 
如果你利用 wx.getShareInfo 接口,調(diào)試出的結(jié)果是這樣,那么恭喜你,你的代碼沒毛病,可以直接進(jìn)入下一個(gè)步驟——數(shù)據(jù)解碼。

 
數(shù)據(jù)解碼
為了保證用戶隱私安全,微信特意將微信群 ID 進(jìn)行了非常復(fù)雜的加密。當(dāng)加密數(shù)據(jù)直接發(fā)到服務(wù)器后,服務(wù)器還需要再進(jìn)行一步解碼,才能正常使用微信群信息。
如果你之前做過小程序中用戶數(shù)據(jù)的解碼,那么你可以將同樣的代碼套用到解碼微信群數(shù)據(jù)上,因?yàn)槎叩募用芩惴ㄊ且荒R粯拥摹?/section>
如果你沒有做過類似的解碼工作,也不用擔(dān)心,微信提供了包括 PHP、Node.js 等環(huán)境下的解碼 demo 代碼。我們只需從小程序開發(fā)文檔中下載 demo 代碼,再將其引入,也能輕松進(jìn)行解碼。
我們以 Node.js 為例,演示如何使用官方的解碼 Demo:
  • 解壓官方 Demo 代碼包,在解壓后的文件夾中找到 Node 這個(gè)文件夾。

  • 通過終端(Terminal)進(jìn)入這個(gè)文件夾,執(zhí)行 npm init 命令,將它變?yōu)?Node.js 應(yīng)用。

  • 修改文件夾中的 demo.js,將示例代碼替換成實(shí)際信息,包括小程序 App ID、登錄用戶的 Session Key、加密數(shù)據(jù)等等。

  • 在終端中,執(zhí)行 node demo.js 命令 。

執(zhí)行后的結(jié)果如下:

 
比較有意思的是,在宣布這個(gè)消息當(dāng)天進(jìn)行調(diào)試,分享接口仍可以獲取到微信群名稱,但現(xiàn)在已無法正常獲取。不知道是有意為之還是 bug 使然。
但是,微信群的唯一 ID(openGId)仍然可以正常獲取。開發(fā)者依然可以通過這個(gè) ID 識(shí)別不同的微信群,進(jìn)而判斷用戶通過哪一個(gè)微信群進(jìn)入小程序。
更多關(guān)于轉(zhuǎn)發(fā)API的內(nèi)容,請參考: 
跳坑《二百一十一》轉(zhuǎn)發(fā)API:onShareAppMessage使用


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://m.u-renovate.com/wxmini/doc/course/23657.html 復(fù)制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×