成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Vue項目-開啟 “ 微信分享踩坑” 之旅

開發 前端
現在把本次開發過程中遇到的問題以及如何解決的,做個記錄。希望對前端小伙伴有所幫助。

剛入門前端的時候寫過很多的微信H5頁面,時隔多年感覺應該是手到擒來,不曾想竟很是費了一些功夫。現在把本次開發過程中遇到的問題以及如何解決的,做個記錄。希望對前端小伙伴有所幫助。

一、微信分享文檔及配置(基礎)

1、微信分享官網文檔

?圖片

重要說明:分享接口:

請注意,不要有誘導分享等違規行為,對于誘導分享行為將永久回收公眾號接口權限,詳細規則請查看:朋友圈管理常見問題。

請注意,原有的 wx.onMenuShareTimeline(分享到朋友圈)、wx.onMenuShareAppMessage(
分享給朋友)、wx.onMenuShareQQ、wx.onMenuShareQZone 接口,即將廢棄請盡快遷移使用客戶端6.7.2及JSSDK 1.4.0以上版本支持的 wx.updateAppMessageShareData(分享到朋友)、wx.updateTimelineShareData(分享到朋友圈)接口。

微信官網文檔:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html。

2、appid對應的公眾號是否有分享接口權限

接口狀態為已獲得,表示有權限。如下圖  (重要)。

?圖片

3、設置白名單和綁定域名

(1)分享的服務器外網ip地址,需要添加到白名單中,如下圖:

圖片

(2)綁定域名先登錄微信公眾平臺進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。
備注:登錄后可在“開發者中心”查看對應的接口權限。

圖片

二、JSSDK使用步驟(進階)

正常流程 按照 官方文檔的步驟。

1、綁定域名

先登錄微信公眾平臺進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。

備注:登錄后可在“開發者中心”查看對應的接口權限。

2、引入 JS 文件

在需要調用 JS 接口的頁面引入如下 JS 文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js如需進一步提升服務穩定性,當上述資源不可訪問時,可改訪問:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。

備注:支持使用 AMD/CMD 標準模塊加載方法加載。

3、通過 config 接口注入權限驗證配置

所有需要使用 JS-SDK 的頁面必須先注入配置信息,否則將無法調用(同一個 url 僅需調用一次,對于變化 url 的SPA的web app可在每次 url 變化時進行調用,目前 Android 微信客戶端不支持 pushState 的H5新特性,所以使用 pushState 來實現web app的頁面會導致簽名失敗,此問題會在Android6.2中修復)。

wx.config({
debug: true, // 開啟調試模式,調用的所有 api 的返回值會在客戶端 alert 出來,若要查看傳入的參數,可以在 pc 端打開,參數信息會通過 log 打出,僅在 pc 端時才會打印。
appId: '', // 必填,公眾號的唯一標識
timestamp: , // 必填,生成簽名的時間戳
nonceStr: '', // 必填,生成簽名的隨機串
signature: '',// 必填,簽名
jsApiList: [] // 必填,需要使用的 JS 接口列表
});

4、通過 ready 接口處理成功驗證

wx.ready(function(){
// config信息驗證后會執行 ready 方法,所有接口調用都必須在 config 接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在 ready 函數中調用來確保正確執行。對于用戶觸發時才調用的接口,則可以直接調用,不需要放在 ready 函數中。
});

三、Vue分享好友和朋友圈(實踐)

項目場景:一個h5界面要求點擊右上角三個點后點擊微信好友分享帶標題和圖片給好友。vue項目中,分享攜帶頭部標題、簡介和縮略圖等信息。

操作流程

1、下載微信的 weixin-js-sdk

npm install weixin-js-sdk --save

2、在需要分享的頁面引入

import wx from 'weixin-js-sdk'; // 引入wxjs
import { shares } from '@/api/index'; // 分享的接口 傳給后端一個地址(與域名一致)

3、在methods寫調用的方法

// vue調用微信的自定義分享
getShareInfo() {
this.save = {
url: location.href.split('#')[0] // 只需要傳當前頁面地址
};
shares(this.save).then(res => {
const config = res.data;
wx.config({
appId: config.appId, // appID 公眾號的唯一標識
timestamp: config.timestamp, // 生成簽名的時間戳
nonceStr: config.nonceStr, // 生成簽名的隨機串
signature: config.signature, // 生成的簽名
jsApiList: [
'updateAppMessageShareData', // 分享到朋友
'updateTimelineShareData', // 分享到朋友圈
]
});

wx.ready(() => {
var shareData = {
title: '王者歸來-王者突破特訓營',
desc: '幫助青銅早日登上王者之路',
link: https://www.baidu.com/, // 分享后的地址
imgUrl:
'分享出去的圖片地址'
};
//點擊要去分享
wx.updateAppMessageShareData(shareData);
wx.updateTimelineShareData(shareData);
});
});
}

4、在 mounted 中調用分享的方法

mounted() {
this.getShareInfo(); // 調用分享的事件
},

5、判斷微信瀏覽器打開

分享的時候要去判斷是否是微信瀏覽器打開,如果不是要提示不能分享。

var broser = window.navigator.userAgent.toLowerCase();
//通過正則表達式匹配broser 中是否含有MicroMessenger字符串
if (broser.match(/MicroMessenger/i) == 'micromessenger') {
console.log('微信瀏覽器');
// this.weixin();
this.showContent = true;
} else {
this.$toast.warn('請使用微信瀏覽器打開');
}

重要說明:注意h5分享是使用微信瀏覽器右上角的三個點進行分享的,在點擊右上角之前要先注入config/ready,官網已說明。自定義“分享給朋友”及“分享到QQ”按鈕的分享內容(1.4.0)*需在用戶可能點擊分享按鈕前就先調用。

wx.ready(function () {   //需在用戶可能點擊分享按鈕前就先調用
wx.updateAppMessageShareData({
title: '', // 分享標題
desc: '', // 分享描述
link: '', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號 JS 安全域名一致
imgUrl: '', // 分享圖標
success: function () {
// 設置成功
}
})
});

擴展知識點:

//使用后端拿到的數據配置wxconfig
wx.config({
debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
appId: res.appId, // 必填,公眾號的唯一標識,填自己的!
timestamp: res.timestamp, // 必填,生成簽名的時間戳,剛才接口拿到的數據
nonceStr: res.nonceStr, // 必填,生成簽名的隨機串
signature: res.signature, // 必填,簽名,見附錄1
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage'
]
});
wx.ready(function () { //如果wx.config配置正常,會自動走此處
console.log('ready執行完畢')
//自定義“分享給朋友”及“分享到QQ”按鈕的分享內容
wx.updateAppMessageShareData({
title: option.shareTitle,//分享的標題
desc: option.shareDesc,//分享的描述信息
link: option.shareUrl,//分享的url
imgUrl: option.shareImg//分享的圖片
});
//自定義“分享到朋友圈”及“分享到QQ空間”按鈕的分
wx.updateTimelineShareData({
title: option.shareTitle,
desc: option.shareDesc,
link: option.shareUrl,
imgUrl: option.shareImg,
});
});

四、要點和踩坑日志(深度與廣度)?

1、H5 微信分享,點擊分享的時候無法調起微信分享?(自己寫的分享按鈕)

解決方案:H5不能調起微信分享,H5 需要引導用戶點擊右上角進行分享。

2、測試號需要關注,才可以調用js接口?

解決方案:設置JS接口安全域后,通過關注該測試號,開發者即可在該域名下調用微信開放的JS接口,請閱讀微信JSSDK開發文檔。

3、wx.config初始化失敗

情況有很多種,主要如下:

(1)Java后臺前面的url與分享的url不一致,需要完全一致。例如后臺是http,分享地址是https。 

(2)參數不對。

4、分享接口沒有權限

這錯誤有2種情況,1是參數不對;2是公眾號中分享接口的狀態為未獲得。

5、短鏈接造成系統不能正常使用微信分享

分析原因:因為在初始化的時候是進來的時候是短鏈接,是通過script在開頭引入的,所以微信sdk已經監控到了,但是我們 wxsdk 配置里面的 link 是我們要分享的長鏈接,微信會認為這是無效配置,所以微信分享不生效。

6、微信分享鏈接出現config:invalid signature錯誤的解決方法

分享時提示錯誤“{"errMsg":"config:invalid signature"}”一般出現這個錯誤多半是簽名獲取失敗,而造成簽名獲取失敗的原因各種各種,子欽在開發的時候也遇到過這種情況,搜索了不少網上教程,解決了自己的問題。invalid signature簽名錯誤。建議按如下順序檢查:

  1. 確認簽名算法正確,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具進行校驗。
  2. 確認 config 中nonceStr(js中駝峰標準大寫S), timestamp與用以簽名中的對應 noncestr , timestamp一致。
  3. 確認 url 是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'后面的 GET 參數部分,但不包括'#'hash后面的部分。
  4. 確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。
  5. 確保一定緩存access_token和jsapi_ticket。
  6. 確保你獲取用來簽名的 url 是動態獲取的,動態頁面可參見實例代碼中 php 的實現方式。如果是 html 的靜態頁面在前端通過 ajax 將url傳到后臺簽名,前端需要用 js 獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent),因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享后的頁面簽名失敗。

相關技術點:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html。

查找:附錄5-常見錯誤及解決方法。

責任編輯:姜華 來源: 前端學苑
相關推薦

2020-10-28 09:43:40

前端開發Vue

2020-09-27 10:35:22

Vue前端代碼

2022-06-28 10:50:21

ElectronHosts

2015-09-07 10:15:53

移動端開發

2020-05-18 08:58:33

Python開發工具

2013-10-10 14:15:22

微信開發

2018-08-09 09:16:24

Vue微信簽名失敗

2020-10-27 10:40:18

JavaAPI V3支付

2023-01-18 23:20:25

編程開發

2020-09-15 08:46:26

Kubernetes探針服務端

2019-03-10 15:11:17

微信好物圈小程序

2023-02-20 08:11:04

2020-11-06 07:35:09

微信支付支付寶

2021-10-28 19:10:02

Go語言編碼

2017-05-05 08:12:51

Spark共享變量

2013-03-21 09:54:51

微信開發者案例

2021-09-03 11:15:18

場景sql配置

2024-04-10 08:39:56

BigDecimal浮點數二進制

2024-04-01 08:05:27

Go開發Java

2017-04-12 10:07:58

互聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区在线91 | 四虎影视免费在线 | 成年无码av片在线 | 成人av播放 | 国产在线一区观看 | 91精品国产91久久久久福利 | 国产三级日本三级 | av先锋资源| 欧美激情欧美激情在线五月 | 91免费福利在线 | 精品视频在线观看 | 天色综合网 | 孰女乱色一区二区三区 | 国产福利网站 | av在线免费网 | 在线免费黄色小视频 | 做a的各种视频 | 91久久精品日日躁夜夜躁国产 | 亚洲一区二区三区观看 | 久久久久久久一区 | 欧美精品影院 | 中文字幕国产日韩 | 91xx在线观看 | 欧美福利一区 | 国产探花在线精品一区二区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 日韩欧美国产综合 | 一区二区三区在线播放 | 久久免费看 | 亚洲 中文 欧美 日韩 在线观看 | 欧美一级大片免费看 | av中文在线 | 久久久久久99 | 男女在线网站 | 成人免费黄视频 | 亚洲不卡av在线 | 97成人免费 | 午夜视频网站 | 婷婷开心激情综合五月天 | 国产激情毛片 | 日韩视频在线免费观看 |