微信自定義分享搀愧,Invalid Signature, updateAppMessageShareData: denied等問(wèn)題

最近在做安卓?jī)?nèi)嵌入H5活動(dòng)頁(yè)拉新活動(dòng)惰聂,遇到的棘手問(wèn)題記錄下,

一是為了日后遇到同樣問(wèn)題好回顧咱筛,二是希望能幫到有同樣問(wèn)題的同學(xué)搓幌。

廢話不多說(shuō),先從最棘手的問(wèn)題直接開(kāi)始:

一迅箩、Invalid Signature

1.因?yàn)轫?xiàng)目?jī)?nèi)是Vue中的hash模式溉愁,所以遇到這個(gè)問(wèn)題時(shí),一直懷疑hash模式是不是不可以饲趋」战遥——其實(shí)可以,hash和history都可以奕塑;記得 encodeURIComponent(location.href.split('#')[0])

2.按照官方文檔的步驟去排查錯(cuò)誤:
(1)確認(rèn)簽名算法正確堂污,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁(yè)面工具進(jìn)行校驗(yàn)。——這個(gè)問(wèn)題主要在后臺(tái)那里爵川,要點(diǎn):1.公眾號(hào)后臺(tái)配置ip白名單以及JS安全域名敷鸦。重點(diǎn):ip白名單記得要配后臺(tái)線上服務(wù)器的ip,否則線上后臺(tái)是拿不到asscee_token的,access_token為null時(shí)也可以參與signature的計(jì)算扒披,很坑V狄馈!碟案!建議讓后臺(tái)把a(bǔ)ccess_token和jsapi_ticket返回或者讓后臺(tái)看看到底有沒(méi)有返回值愿险;2.記得拿公眾號(hào)的APPID去計(jì)算,一定要后臺(tái)親眼去比對(duì)价说,APPID對(duì)不對(duì)辆亏!(2)確認(rèn)config中nonceStr(js中駝峰標(biāo)準(zhǔn)大寫(xiě)S), timestamp與用以簽名中的對(duì)應(yīng)noncestr, timestamp一致。——這一步?jīng)]啥好說(shuō)的鳖目,自己好好檢查

(3)確認(rèn)url是頁(yè)面完整的url(請(qǐng)?jiān)诋?dāng)前頁(yè)面alert(location.href.split('#')[0])確認(rèn))扮叨,包括'http(s)://'部分,以及'领迈?'后面的GET參數(shù)部分,但不包括'#'hash后面的部分彻磁。——記得 encodeURIComponent(location.href.split('#')[0])

(4)確認(rèn) config 中的 appid 與用來(lái)獲取 jsapi_ticket 的 appid 一致。

(5)確保一定緩存access_token和jsapi_ticket狸捅。

(6)確保你獲取用來(lái)簽名的url是動(dòng)態(tài)獲取的衷蜓,動(dòng)態(tài)頁(yè)面可參見(jiàn)實(shí)例代碼中php的實(shí)現(xiàn)方式。如果是html的靜態(tài)頁(yè)面在前端通過(guò)ajax將url傳到后臺(tái)簽名尘喝,前端需要用js獲取當(dāng)前頁(yè)面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent)磁浇,因?yàn)轫?yè)面一旦分享,微信客戶端會(huì)在你的鏈接末尾加入其它參數(shù)朽褪,如果不是動(dòng)態(tài)獲取當(dāng)前鏈接置吓,將導(dǎo)致分享后的頁(yè)面簽名失敗。**——記得前端把當(dāng)前頁(yè)面路徑(encodeURIComponent(location.href.split('#')[0]))ajax 傳給后臺(tái) **

二鞍匾、the permission value is offline verifying

(1)確認(rèn)config正確通過(guò)交洗。——記得在頁(yè)面掛在完畢去注入JSSDK,如果有路由攔截跳轉(zhuǎn)的橡淑,要跳轉(zhuǎn)完畢后再去注入构拳,要保證注入的頁(yè)面url和調(diào)用分享接口的url是一模一樣(encodeURIComponent(location.href.split('#')[0]))

(2)如果是在頁(yè)面加載好時(shí)就調(diào)用了JSAPI,則必須寫(xiě)在wx.ready的回調(diào)中梁棠。——wx.ready的回調(diào)去寫(xiě)分享邏輯

(3)確認(rèn)config的jsApiList參數(shù)包含了這個(gè)JSAPI置森。

三、permission denied

(1)先去微信公眾平臺(tái) 看看公眾號(hào)沒(méi)有權(quán)限使用這個(gè)JSAPI

(2)可以調(diào)用jweixin.checkJsApi符糊,記得把debug打開(kāi)凫海,微信開(kāi)發(fā)者工具和真機(jī)報(bào)的錯(cuò)誤很大可能會(huì)不一樣。引用的最新的jssdk 1.6男娄;也用了最新的分享給好友的方法行贪;真機(jī) updateAppMessageShareData: true; updateTimelineShareData: true; config: ok漾稀,就是分享不了,我真是吐了建瘫,


如果遇到同樣的情況崭捍,記得jsApiList加入 onMenuShareAppMessage,沒(méi)錯(cuò)就是老版本啰脚,那個(gè)即將廢棄的分享api

最后放上封裝的類:
1.初始化vue時(shí)殷蛇,let wx = new Wx();if(wx.isWeiXin){ Vue.prototype.wx = wx; }
2.調(diào)用時(shí)橄浓,this.wx.share(title, desc, link, imgUrl, successCallback)
3.記得改一下_initJssdk方法中請(qǐng)求接口config配置的api??


export class Wx {

  constructor (jsApiList = ['updateAppMessageShareData', 'onMenuShareAppMessage' , 'closeWindow']) {
    this.isWeiXin = this.isInWx()
    this.wxJssdkInfo = {}
    this.jsApiList = jsApiList
  }

  isInWx () {
    return navigator.userAgent.toLowerCase().indexOf('micromessenger') > -1 ? true : false
  }

  async _initJssdk (callback) {
    try {
      let auth_url = encodeURIComponent(location.href.split('#')[0])
      let params = { auth_url }
      this.wxJssdkInfo = await fissionApi.getWxAuth(params)
      jweixin.config({
        debug: IS_PRO() ? false : true, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái)粒梦,若要查看傳入的參數(shù),可以在pc端打開(kāi)荸实,參數(shù)信息會(huì)通過(guò)log打出匀们,僅在pc端時(shí)才會(huì)打印。
        appId: this.wxJssdkInfo.app_id, // 必填准给,公眾號(hào)的唯一標(biāo)識(shí)
        timestamp: this.wxJssdkInfo.timestamp, // 必填昼蛀,生成簽名的時(shí)間戳
        nonceStr: this.wxJssdkInfo.noncestr, // 必填,生成簽名的隨機(jī)串
        signature: this.wxJssdkInfo.signature,// 必填圆存,簽名
        jsApiList: this.jsApiList // 必填,需要使用的JS接口列表
      })
      jweixin.error(res => console.log(res))
      if (callback) {
        callback(this.wxJssdkInfo)
      }
    } catch (err) {
      console.log(err)
    }
  }
  share (title, desc, link, imgUrl, successCallback) {
    link = link || window.location.href; 
    if(!this.isWeiXin) return
    this._initJssdk(() => {
      jweixin.ready(() => {
        jweixin.checkJsApi({
          jsApiList: this.jsApiList, // 需要檢測(cè)的JS接口列表仇哆,所有JS接口列表見(jiàn)附錄2,
          success: function(res) {
            if (res.checkResult.updateAppMessageShareData || res.checkResult.onMenuShareAppMessage) {
              jweixin.onMenuShareAppMessage({
                title, 
                desc, 
                link, 
                imgUrl, 
                success: res => successCallback && successCallback(res),
                fail: function(error) {
                  console.log('updateAppMessageShareData error:', error);
                }
              })
              jweixin.onMenuShareAppMessage({
                title, 
                desc, 
                link, 
                imgUrl, 
                success: res => successCallback && successCallback(res),
                fail: function(error) {
                  console.log('updateAppMessageShareData error:', error);
                }
              })
            }
          }
        })
      })
    })
  }

  closeH5 () {
    wx.closeWindow();
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沦辙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子讹剔,更是在濱河造成了極大的恐慌油讯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件延欠,死亡現(xiàn)場(chǎng)離奇詭異陌兑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)由捎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)兔综,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人狞玛,你說(shuō)我怎么就攤上這事软驰。” “怎么了心肪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锭亏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我硬鞍,道長(zhǎng)慧瘤,這世上最難降的妖魔是什么戴已? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮锅减,結(jié)果婚禮上糖儡,老公的妹妹穿的比我還像新娘。我一直安慰自己上煤,他們只是感情好休玩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著劫狠,像睡著了一般拴疤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上独泞,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天呐矾,我揣著相機(jī)與錄音,去河邊找鬼懦砂。 笑死蜒犯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荞膘。 我是一名探鬼主播罚随,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼羽资!你這毒婦竟也來(lái)了淘菩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屠升,失蹤者是張志新(化名)和其女友劉穎潮改,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腹暖,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汇在,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脏答。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糕殉。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖殖告,靈堂內(nèi)的尸體忽然破棺而出糙麦,到底是詐尸還是另有隱情,我是刑警寧澤丛肮,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布赡磅,位于F島的核電站,受9級(jí)特大地震影響宝与,放射性物質(zhì)發(fā)生泄漏焚廊。R本人自食惡果不足惜冶匹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咆瘟。 院中可真熱鬧嚼隘,春花似錦、人聲如沸袒餐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)灸眼。三九已至卧檐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間焰宣,已是汗流浹背霉囚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匕积,地道東北人盈罐。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像闪唆,于是被迫代替她去往敵國(guó)和親盅粪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1. 準(zhǔn)備工作 1.1 查看公眾號(hào)分享接口權(quán)限 要使用微信SDK必須要有經(jīng)過(guò)微信認(rèn)證的非個(gè)人服務(wù)號(hào) 登陸服務(wù)號(hào)后悄蕾,...
    sxplus閱讀 6,246評(píng)論 0 2
  • web:1湾揽、引入JS文件: 2、獲取簽名等參數(shù) service:1笼吟、注冊(cè)微信公眾號(hào),然后獲取對(duì)應(yīng)的appId和Ap...
    WLAnswer閱讀 553評(píng)論 0 0
  • 需求 為客戶做微信公眾號(hào)的內(nèi)容霸旗,客戶要求分享頁(yè)面的時(shí)候能顯示自己的縮略圖贷帮,標(biāo)題與內(nèi)容。 微信默認(rèn)分享的樣式一般是:...
    麥田_426閱讀 484評(píng)論 0 1
  • 錯(cuò)誤1 分享到朋友圈的title和url地址都不正確诱告,title是公眾號(hào)名稱撵枢,url是本頁(yè)面地址,都不讀取我們自定...
    hey_沙子閱讀 35,312評(píng)論 1 9
  • 最重要的一個(gè)坑精居? invalid url domain當(dāng)前頁(yè)面所在域名與使用的appid沒(méi)有綁定锄禽,請(qǐng)確認(rèn)正確填寫(xiě)綁...
    G_whk閱讀 12,433評(píng)論 0 2