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

