那么,如何正確地在小程序里,加入這個能力呢?在使用開發(fā)者工具的時候,如何進(jìn)行調(diào)試呢? 今天,「知曉程序」就來告訴你,如何正確地在小程序里讀取微信群 ID。 關(guān)注「知曉程序」公眾號,在微信后臺回復(fù)「ID」,查看小程序獲取群 ID Demo 的源碼。 兩種讀取方式根據(jù)官方文檔,我們可以通過以下兩個方式,讀取到微信群 ID 的信息:
首先,我們來聊聊用戶成功地將小程序頁面分享到微信群的情況下,如何讀取目標(biāo)微信群的 ID。 此次接口更新,控制小程序頁面右上角菜單中的「分享」按鈕顯示與消失,不再完全依賴頁面邏輯文件中是否擁有onShareAppMessage 現(xiàn)在有兩個新的接口,可以決定小程序是否顯示分享菜單:wx.showShareMenu (顯示分享菜單)和 wx.hideShareMenu (隱藏分享菜單)。在 接口中,shareTickets 原本這個接口的return 只能接受path 等控制分享卡片內(nèi)容的參數(shù)。在此次更新后,return 可以在分享成功、失敗、完成(成功和失?。┫?,執(zhí)行特定的回調(diào)函數(shù)。在回調(diào)函數(shù)中,我們可以插入?yún)?shù),以便小程序?qū)⑽⑿湃盒畔魅搿P〕绦蛟跈z測到用戶分享動作之后,會將shareTicket 帶入到這個參數(shù)中,并執(zhí)行相應(yīng)回調(diào)函數(shù)。來看代碼: Page({ onLoad { wx.showShareMenu({ withShareTicket: true //要求小程序返回分享目標(biāo)信息 }) }, // 其他的頁面函數(shù)、生命周期函數(shù)等 onShareAppMessage { return { title: '頁面分享標(biāo)題', path: '/pages/path/to/target', success(res){ console.log(res.shareTickets[0]) // 奇怪為什么 shareTickets 是個數(shù)組?這個數(shù)組永遠(yuǎn)只有一個值。 } } } } 接下來,是通過微信群進(jìn)入小程序情景下的微信群 ID 獲取。 用戶進(jìn)入小程序時,onLaunch 生命周期函數(shù)中,獲取到進(jìn)入小程序的渠道(情景值)的微信群分享卡片進(jìn)入小程序,小程序就可以額外獲取到 。App({ onLaunch: function (ops) { if(ops.scene == 1044){ console.log(ops.shareTicket) } } }) 有了shareTicket 通過調(diào)用wx.getShareInfo 函數(shù),獲取到目標(biāo)微信群(加密過后的)ID 了需要注意的是,如果當(dāng)前用戶未登錄(從未調(diào)用wx.login 或session 過期),這些接口都會出現(xiàn)調(diào)用失敗的情況另外,當(dāng)分享失敗或數(shù)據(jù)獲取失敗,這些函數(shù)只會調(diào)用fail 「知曉程序」complete 回調(diào),并通過數(shù)據(jù)包中的錯誤碼,判斷接口是否成功調(diào)用,以免出現(xiàn)調(diào)用失敗時小程序無相應(yīng)反應(yīng)的情況。在電腦上調(diào)試分享接口為了便于開發(fā),微信很貼心地在開發(fā)者工具中加入了分享接口調(diào)試功能。下面,「知曉程序」就來告訴你,調(diào)試分享接口的具體方法。 首先是用戶的分享動作調(diào)試。 在目標(biāo)頁面中,點(diǎn)擊右上角的「更多」按鈕,再點(diǎn)擊「轉(zhuǎn)發(fā)」。這時候,頁面會變成「發(fā)送給好友」,里面有開發(fā)者工具提供的 9 個模擬群,任君選擇。 隨意點(diǎn)擊一個群,進(jìn)行模擬分享動作,小程序就可以獲取到模擬群的加密數(shù)據(jù)。 接下來,是獲取進(jìn)入小程序的微信群信息的調(diào)試方法。 點(diǎn)擊左側(cè)「編譯」按鈕下方的「自定義編譯」按鈕,在「設(shè)置應(yīng)用的進(jìn)入場景」,選擇「1044:微信群會話中的小程序消息卡片(帶 shareTicket)」。 選擇場景之后,對話框下方會多出「選擇進(jìn)入的群」。隨便選擇一個測試群,再點(diǎn)擊確定,你就可以開始調(diào)試了。 如果你利用 數(shù)據(jù)解碼為了保證用戶隱私安全,微信特意將微信群 ID 進(jìn)行了非常復(fù)雜的加密。當(dāng)加密數(shù)據(jù)直接發(fā)到服務(wù)器后,服務(wù)器還需要再進(jìn)行一步解碼,才能正常使用微信群信息。 如果你之前做過小程序中用戶數(shù)據(jù)的解碼,那么你可以將同樣的代碼套用到解碼微信群數(shù)據(jù)上,因?yàn)槎叩募用芩惴ㄊ且荒R粯拥摹?/p> 如果你沒有做過類似的解碼工作,也不用擔(dān)心,微信提供了包括 PHP、Node.js 等環(huán)境下的解碼 demo 代碼。我們只需從小程序開發(fā)文檔中下載 demo 代碼,再將其引入,也能輕松進(jìn)行解碼。 我們以 Node.js 為例,演示如何使用官方的解碼 Demo:
執(zhí)行后的結(jié)果如下: 比較有意思的是,在宣布這個消息當(dāng)天進(jìn)行調(diào)試,分享接口仍可以獲取到微信群名稱,但現(xiàn)在已無法正常獲取。不知道是有意為之還是 bug 使然。 但是,微信群的唯一 ID(openGId )仍然可以正常獲取。開發(fā)者依然可以通過這個 ID 識別不同的微信群,進(jìn)而判斷用戶通過哪一個微信群進(jìn)入小程序。關(guān)注「知曉程序」公眾號,在微信后臺回復(fù)「點(diǎn)評」,獲取大眾點(diǎn)評點(diǎn)餐小程序全套開發(fā)經(jīng)驗(yàn)。
|
|