微信外喚起微信小程序的方法詳解
喚起微信小程序
目的:為了跳轉(zhuǎn)到微信環(huán)境下,可以進(jìn)行長(zhǎng)按掃碼
0. 接口調(diào)用憑證
auth.getAccessToken
本接口應(yīng)在服務(wù)器端調(diào)用,詳細(xì)說(shuō)明參見(jiàn)服務(wù)端API。
獲取小程序全局唯一后臺(tái)接口調(diào)用憑據(jù)(access_token
)。調(diào)用絕大多數(shù)后臺(tái)接口時(shí)都需使用 access_token,開(kāi)發(fā)者需要進(jìn)行妥善保存。 如使用云開(kāi)發(fā),可通過(guò)云調(diào)用免維護(hù) access_token 調(diào)用。如使用云托管,也可以通過(guò)微信令牌/開(kāi)放接口服務(wù)免維護(hù) access_token 調(diào)用。
請(qǐng)求地址
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
請(qǐng)求參數(shù)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 |
---|---|---|---|---|
grant_type | string | 是 | 填寫(xiě) client_credential | |
appid | string | 是 | 小程序唯一憑證,即 AppID,可在「微信公眾平臺(tái) - 設(shè)置 - 開(kāi)發(fā)設(shè)置」頁(yè)中獲得。(需要已經(jīng)成為開(kāi)發(fā)者,且?guī)ぬ?hào)沒(méi)有異常狀態(tài)) | |
secret | string | 是 | 小程序唯一憑證密鑰,即 AppSecret,獲取方式同 appid |
返回值
Object 返回的 JSON 數(shù)據(jù)包
屬性 | 類型 | 說(shuō)明 |
---|---|---|
access_token | string | 獲取到的憑證 |
expires_in | number | 憑證有效時(shí)間,單位:秒。目前是7200秒之內(nèi)的值。 |
errcode | number | 錯(cuò)誤碼 |
errmsg | string | 錯(cuò)誤信息 |
errcode 的合法值
值 | 說(shuō)明 | 最低版本 |
---|---|---|
-1 | 系統(tǒng)繁忙,此時(shí)請(qǐng)開(kāi)發(fā)者稍候再試 | |
0 | 請(qǐng)求成功 | |
40001 | AppSecret 錯(cuò)誤或者 AppSecret 不屬于這個(gè)小程序,請(qǐng)開(kāi)發(fā)者確認(rèn) AppSecret 的正確性 | |
40002 | 請(qǐng)確保 grant_type 字段值為 client_credential | |
40013 | 不合法的 AppID,請(qǐng)開(kāi)發(fā)者檢查 AppID 的正確性,避免異常字符,注意大小寫(xiě) |
返回?cái)?shù)據(jù)示例
正常返回
{"access_token":"ACCESS_TOKEN","expires_in":7200}
錯(cuò)誤時(shí)返回
{"errcode":40013,"errmsg":"invalid appid"}
access_token 的存儲(chǔ)與更新
access_token
的存儲(chǔ)至少要保留 512 個(gè)字符空間;access_token
的有效期目前為 2 個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token
失效;- 建議開(kāi)發(fā)者使用中控服務(wù)器統(tǒng)一獲取和刷新
access_token
,其他業(yè)務(wù)邏輯服務(wù)器所使用的access_token
均來(lái)自于該中控服務(wù)器,不應(yīng)該各自去刷新,否則容易造成沖突,導(dǎo)致access_token
覆蓋而影響業(yè)務(wù); access_token
的有效期通過(guò)返回的expires_in
來(lái)傳達(dá),目前是7200秒之內(nèi)的值,中控服務(wù)器需要根據(jù)這個(gè)有效時(shí)間提前去刷新。在刷新過(guò)程中,中控服務(wù)器可對(duì)外繼續(xù)輸出的老access_token
,此時(shí)公眾平臺(tái)后臺(tái)會(huì)保證在5分鐘內(nèi),新老access_token
都可用,這保證了第三方業(yè)務(wù)的平滑過(guò)渡;access_token
的有效時(shí)間可能會(huì)在未來(lái)有調(diào)整,所以中控服務(wù)器不僅需要內(nèi)部定時(shí)主動(dòng)刷新,還需要提供被動(dòng)刷新access_token
的接口,這樣便于業(yè)務(wù)服務(wù)器在API調(diào)用獲知access_token
已超時(shí)的情況下,可以觸發(fā)access_token
的刷新流程。
詳情可參考微信公眾平臺(tái)文檔 《獲取access_token》
1.生成鏈接
urllink.generate
本接口應(yīng)在服務(wù)器端調(diào)用,詳細(xì)說(shuō)明參見(jiàn)服務(wù)端API。
本接口支持云調(diào)用。需開(kāi)發(fā)者工具版本 >=
1.02.1904090
(最新穩(wěn)定版下載),wx-server-sdk
>=0.4.0
獲取小程序 URL Link,適用于短信、郵件、網(wǎng)頁(yè)、微信內(nèi)等拉起小程序的業(yè)務(wù)場(chǎng)景。通過(guò)該接口,可以選擇生成到期失效和永久有效的小程序鏈接,有數(shù)量限制,目前僅針對(duì)國(guó)內(nèi)非個(gè)人主體的小程序開(kāi)放,詳見(jiàn)獲取 URL Link
調(diào)用方式:
HTTPS 調(diào)用
請(qǐng)求地址
POST https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN
請(qǐng)求參數(shù)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 |
---|---|---|---|---|
access_token / cloudbase_access_token | string | 是 | 接口調(diào)用憑證 | |
path | string | 否 | 通過(guò) URL Link 進(jìn)入的小程序頁(yè)面路徑,必須是已經(jīng)發(fā)布的小程序存在的頁(yè)面,不可攜帶 query 。path 為空時(shí)會(huì)跳轉(zhuǎn)小程序主頁(yè) | |
query | string | 否 | 通過(guò) URL Link 進(jìn)入小程序時(shí)的query,最大1024個(gè)字符,只支持?jǐn)?shù)字,大小寫(xiě)英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~% | |
env_version | string | “release” | 否 | 要打開(kāi)的小程序版本。正式版為 “release”,體驗(yàn)版為"trial",開(kāi)發(fā)版為"develop",僅在微信外打開(kāi)時(shí)生效。體驗(yàn)版和開(kāi)發(fā)版僅在iOS 上支持,Android 將在近期支持。 |
is_expire | boolean | false | 否 | 生成的 URL Link 類型,到期失效:true,永久有效:false。注意,永久有效 Link 和有效時(shí)間超過(guò)180天的到期失效 Link 的總數(shù)上限為10萬(wàn)個(gè),詳見(jiàn)獲取 URL Link,生成 Link 前請(qǐng)仔細(xì)確認(rèn)。 |
expire_type | number | 0 | 否 | 小程序 URL Link 失效類型,失效時(shí)間:0,失效間隔天數(shù):1 |
expire_time | number | 否 | 到期失效的 URL Link 的失效時(shí)間,為 Unix 時(shí)間戳。生成的到期失效 URL Link 在該時(shí)間前有效。最長(zhǎng)有效期為1年。expire_type 為 0 必填 | |
expire_interval | number | 否 | 到期失效的URL Link的失效間隔天數(shù)。生成的到期失效URL Link在該間隔時(shí)間到達(dá)前有效。最長(zhǎng)間隔天數(shù)為365天。expire_type 為 1 必填 | |
cloud_base | Object | 否 | 云開(kāi)發(fā)靜態(tài)網(wǎng)站自定義 H5 配置參數(shù),可配置中轉(zhuǎn)的云開(kāi)發(fā) H5 頁(yè)面。不填默認(rèn)用官方 H5 頁(yè)面 |
cloud_base 的結(jié)構(gòu)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 |
---|---|---|---|---|
env | string | 是 | 云開(kāi)發(fā)環(huán)境 | |
domain | string | 否 | 靜態(tài)網(wǎng)站自定義域名,不填則使用默認(rèn)域名 | |
path | string | / | 否 | 云開(kāi)發(fā)靜態(tài)網(wǎng)站 H5 頁(yè)面路徑,不可攜帶 query |
query | string | 否 | 云開(kāi)發(fā)靜態(tài)網(wǎng)站 H5 頁(yè)面 query 參數(shù),最大 1024 個(gè)字符,只支持?jǐn)?shù)字,大小寫(xiě)英文以及部分特殊字符:`!#$&’()*+,/:;=?@-._~%`` | |
resource_appid | string | 否 | 第三方批量代云開(kāi)發(fā)時(shí)必填,表示創(chuàng)建該 env 的 appid (小程序/第三方平臺(tái)) |
返回值
url_link
生成的小程序 URL Link
返回值說(shuō)明
如果調(diào)用成功,會(huì)直接返回生成的小程序 URL Link。如果請(qǐng)求失敗,會(huì)返回 JSON 格式的數(shù)據(jù)。
示例
請(qǐng)求
{ "path": "/pages/publishHomework/publishHomework", "query": "", "is_expire":true, "expire_type":1, "expire_interval":1, "env_version": "release", "cloud_base": { "env": "xxx", "domain": "xxx.xx", "path": "/jump-wxa.html", "query": "a=1&b=2" } }
返回
{ "errcode": 0, "errmsg": "ok", "url_link": "URL Link" }
2.1 喚起小程序:URL Scheme
通過(guò)服務(wù)端接口或在小程序管理后臺(tái)「工具」-「生成 URL Scheme」入口可以獲取打開(kāi)小程序任意頁(yè)面的 URL Scheme。適用于從短信、郵件、微信外網(wǎng)頁(yè)等場(chǎng)景打開(kāi)小程序。 通過(guò) URL Scheme 打開(kāi)小程序的場(chǎng)景值為 1065。
生成的 URL Scheme 如下所示:
weixin://dl/business/?t= *TICKET*
iOS系統(tǒng)支持識(shí)別 URL Scheme,可在短信等應(yīng)用場(chǎng)景中直接通過(guò)Scheme跳轉(zhuǎn)小程序。
Android系統(tǒng)不支持直接識(shí)別 URL Scheme,用戶無(wú)法通過(guò) Scheme 正常打開(kāi)小程序,開(kāi)發(fā)者需要使用 H5 頁(yè)面中轉(zhuǎn),再跳轉(zhuǎn)到 Scheme 實(shí)現(xiàn)打開(kāi)小程序,跳轉(zhuǎn)代碼示例如下:
location.href = 'weixin://dl/business/?t= *TICKET*'
該跳轉(zhuǎn)方法可以在用戶打開(kāi) H5 時(shí)立即調(diào)用,也可以在用戶觸發(fā)事件后調(diào)用。
調(diào)用上限
Scheme 將根據(jù)是否為到期有效與失效時(shí)間參數(shù),分為短期有效Scheme與長(zhǎng)期有效Scheme:
- 單個(gè)小程序每日生成 Scheme 上限為50萬(wàn)個(gè)(包含短期有效 Scheme 與長(zhǎng)期有效 Scheme)
- 有效時(shí)間超過(guò)180天的 Scheme 或永久有效的 Scheme 為長(zhǎng)期有效Scheme,單個(gè)小程序總共可生成長(zhǎng)期有效 Scheme 上限為10萬(wàn)個(gè),請(qǐng)謹(jǐn)慎調(diào)用
- 有效時(shí)間不超過(guò)180天的 Scheme 為短期有效Scheme,單個(gè)小程序生成短期有效 Scheme 不設(shè)上限
2.2 喚起小程序:URL Link
通過(guò)服務(wù)端接口可以獲取打開(kāi)小程序任意頁(yè)面的 URL Link。適用于從短信、郵件、網(wǎng)頁(yè)、微信內(nèi)等場(chǎng)景打開(kāi)小程序。 通過(guò) URL Link 打開(kāi)小程序的場(chǎng)景值為 1194。
生成的 URL Link 如下所示:
https://wxaurl.cn/*TICKET* 或 https://wxmpurl.cn/*TICKET*
調(diào)用上限
Link 將根據(jù)是否為到期有效與失效時(shí)間參數(shù),分為短期有效Link 與 長(zhǎng)期有效Link:
- 單個(gè)小程序每日生成 Link 上限為50萬(wàn)個(gè)(包含短期有效 Link 與長(zhǎng)期有效 Link )
- 有效時(shí)間超過(guò)180天的 Link 或永久有效的 Link 為長(zhǎng)期有效Link,單個(gè)小程序總共可生成長(zhǎng)期有效 Link 上限為10萬(wàn)個(gè),請(qǐng)謹(jǐn)慎調(diào)用
- 有效時(shí)間不超過(guò)180天的 Link 為短期有效Link,單個(gè)小程序生成短期有效 Link 不設(shè)上限
注意事項(xiàng)
- 只能生成已發(fā)布的小程序的 URL Link。
- 在微信內(nèi)或者安卓手機(jī)打開(kāi) URL Link 時(shí),默認(rèn)會(huì)先跳轉(zhuǎn)官方 H5 中間頁(yè),如果需要定制 H5 內(nèi)容,可以使用云開(kāi)發(fā)靜態(tài)網(wǎng)站。
示例代碼
默認(rèn)官方 H5 示例地址:https://wxaurl.cn/pFawq35qbfd
自定義 H5 示例地址:https://wxaurl.cn/GI7aI2G1otd
兼容性
記錄在IOS、安卓環(huán)境下各應(yīng)用調(diào)起小程序的情況
APP | 支持環(huán)境 IOS 安卓 | 其他說(shuō)明 |
---|---|---|
原生瀏覽器 | ?IOS ?安卓 | |
釘釘 | ?安卓 | |
微博 | ?IOS ?安卓 | 需配置安全域名 |
小紅書(shū) | 小紅鏈接打不開(kāi)(安卓) | |
咸魚(yú) | 聊天窗口發(fā)送的鏈接 不允許打開(kāi) | |
qq群 | ?IOS | |
知乎 | ?IOS ?安卓 | |
百度問(wèn)答 | ||
百度網(wǎng)盤(pán) | ||
快手 | ?安卓 | |
抖音 | ?IOS ?安卓 | |
uc瀏覽器 | ?IOS ?安卓 | |
百度 | ?IOS ?安卓 | |
B站 | 對(duì)話聊天不支持打開(kāi)鏈接(蘋(píng)果/安卓) | |
網(wǎng)易云音樂(lè) | ?安卓 | |
愛(ài)奇藝 |
相關(guān)鏈接
urlscheme.generate | 微信開(kāi)放文檔
獲取 URL Link | 微信開(kāi)放文檔
獲取 URL Scheme | 微信開(kāi)放文檔
- 微信小程序 wx.request(接口調(diào)用方式)詳解及實(shí)例
- 微信小程序調(diào)用攝像頭隱藏式拍照功能
- 微信小程序頁(yè)面調(diào)用自定義組件內(nèi)的事件詳解
- 微信小程序如何調(diào)用json數(shù)據(jù)接口并解析
- 微信小程序調(diào)用攝像頭實(shí)現(xiàn)拍照功能
- 微信小程序調(diào)用微信登陸獲取openid及java做為服務(wù)端示例
- 微信小程序調(diào)用支付接口的完整流程記錄
- 使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。
- 微信小程序頁(yè)面與組件之間信息傳遞與函數(shù)調(diào)用
- 微信小程序開(kāi)發(fā)打開(kāi)另一個(gè)小程序的實(shí)現(xiàn)方法
相關(guān)文章
js實(shí)現(xiàn)省市級(jí)聯(lián)效果分享
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)省市級(jí)聯(lián)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08詳述 Sublime Text 打開(kāi) GBK 格式中文亂碼的解決方法
這篇文章主要介紹了詳述 Sublime Text 打開(kāi) GBK 格式中文亂碼的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10js+html5實(shí)現(xiàn)canvas繪制鏤空字體文本的方法
這篇文章主要介紹了js+html5實(shí)現(xiàn)canvas繪制鏤空字體文本的方法,涉及html5文字效果的相關(guān)技巧,需要的朋友可以參考下2015-06-06JS實(shí)現(xiàn)百度搜索接口及鏈接功能實(shí)例代碼
這篇文章主要介紹了JS實(shí)現(xiàn)百度搜索接口及鏈接功能實(shí)例代碼,需要的朋友可以參考下2018-02-02JavaScript中日期格式化的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了JavaScript中日期格式化的一些實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01微信小程序手動(dòng)添加收貨地址省市區(qū)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了微信小程序手動(dòng)添加收貨地址省市區(qū)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05