自定義微信分享鏈接(使用JS-SDK) + 實現(xiàn)預覽pdf

需求:外部網(wǎng)頁在微信中被分享時嘱腥,會出現(xiàn)一個小卡片耕渴,包含title,image和url齿兔。



這個分享鏈接的內(nèi)容不夠直觀橱脸,故需自定義小卡片的內(nèi)容。

  1. 準備公眾號
    在公眾號中設(shè)置js安全域名(即需要分享鏈接的網(wǎng)頁的域名)
    js安全域名

服務(wù)端獲取簽名(客戶端不安全分苇,且存在跨域問題)

可參考:微信JS-SDK說明文檔 >

  1. 獲取access_token
    首先 從公眾號中獲取APPID和SECRET
    appid和appsecret
請求地址: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + APPID + '&secret=' + SECRET,
請求方法:'get'
返回:access_token

此時可能出現(xiàn)白名單錯誤(忘截圖了)添诉,需要在微信公眾號中設(shè)置錯誤中的IP


白名單設(shè)置
  1. 獲取ticket
//  ACCESS_TOKEN為上一步中得到的access_token
請求地址:'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi'
請求方法:'get'
返回:'ticket'

注意:access_token和ticket都需要緩存

4.獲取簽名signature

const nonceStr = 'string'  // 一個隨機的字符串即可
const jsapi_ticket = ticket  // 上一步中的ticket
const timestamp = Date.now() // 當前時間戳
const url = location.href.spilt('#')[0]  // 該網(wǎng)頁當前地址不要`#`后面的內(nèi)容(由后續(xù)前端當做參數(shù)傳遞過來)

將以上內(nèi)容以鍵值對形式拼接,類似如下

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

本地引入sha1算法(需網(wǎng)上查找)
將上述拼接的字符串以參數(shù)的形式傳遞到sha1中得到signature
signature = sha1(拼接完的字符串)
驗證signature是否正確 >
將appId医寿,nonceStr栏赴,timestamp和signature返回給前端

前端處理

  1. 通過config接口注入權(quán)限驗證配置
// CDN引入
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js" charset="utf-8"></script>
wx.config({
    debug: true, // 開啟調(diào)試模式,可以在電腦端打印消息靖秩,也可以在真機上彈出框提示錯誤消息
    appId: '', // 必填须眷,公眾號的唯一標識
    timestamp: , // 必填,生成簽名的時間戳
    nonceStr: '', // 必填沟突,生成簽名的隨機串
    signature: '',// 必填花颗,簽名
    jsApiList: ['updateAppMessageShareData'] // 必填,需要使用的JS接口列表 === 根據(jù)JS-SDK附錄二獲取惠拭,此處只是加了一個分享給朋友的api
});

后續(xù)整理發(fā)現(xiàn)了一個很怪的bug扩劝。我使用的是安卓,微信版本是6.7.3,調(diào)試的時候發(fā)現(xiàn)config: ok并且updateAppMessageShareData: ok但是實際上分享的鏈接并不會起到自定義內(nèi)容的效果棒呛。經(jīng)過很多嘗試后聂示,發(fā)現(xiàn)需要更改jsApiList里的內(nèi)容。如下:

官網(wǎng)上是這樣描述的:

即將廢棄的分享的api

但是實際上在使用updateAppMessageShareData的時候沒有作用条霜,必須在jsApiList中增加相應(yīng)的廢棄的接口才能生效催什。

jsApiList: ['updateAppMessageShareData', 'onMenuShareAppMessage', 'updateTimelineShareData', 'onMenuShareTimeline']

這時候調(diào)用updateAppMessageShareDataupdateTimelineShareData的時候就可以生效了宰睡,具體原理不清楚蒲凶。。

分享給朋友

朋友圈分享


6. 成功驗證和失敗驗證

```javascript
// 成功
wx.ready(() => {
       wx.updateAppMessageShareData({
              title: '', // 分享標題
              desc: '', // 分享描述拆内,為主題內(nèi)容
              link: location.href, // 分享鏈接旋圆,該鏈接域名或路徑必須與當前頁面對應(yīng)的公眾號JS安全域名一致。當點擊小卡片時會跳轉(zhuǎn)到該鏈接
              imgUrl: '', // 分享圖標麸恍,尺寸120 x 120灵巧,大小不超過10K,不支持GIF格式抹沪。必須采用https協(xié)議(最好寫完整url),不支持base64
              success() {
                 // 設(shè)置成功
              }
      })

// 失敗
wx.error((err) => {})

注意:imgUrl配置有嚴格的要求
尺寸120 x 120刻肄,大小不超過10K,不支持GIF格式融欧。必須采用https協(xié)議(最好寫完整url),不支持base64敏弃。由于我使用的是vue,在webpack打包時圖片小于10k的是會自動打包成base64導致無法正常顯示圖片噪馏,因此在webpack.base.config.js中修改默認配置

limit修改為4kb

  1. 保證可以分享每個頁面都能分享出這種小卡片形式的鏈接
    在app.vue中加入監(jiān)測路由麦到,由于第一次進入不會調(diào)用,所以在mounted也執(zhí)行一次this.shareLinkToWxFriends()欠肾,shareLinkToWxFriends函數(shù)就是上面第5步和第六步的內(nèi)容

    image.png

  2. 將代碼部署完成后瓶颠,可在真機上查看結(jié)果


    分享鏈接結(jié)果

附加 pdf的顯示和分享

由于在網(wǎng)頁中直接查看pdf的路徑是無法在微信中查看(安卓)和分享(ios),因此使用pdf插件進行優(yōu)化 --- pdf.js刺桃。其原理是繪制成canvas粹淋,最終在真機上放大時可能出現(xiàn)模糊的問題。

  1. 現(xiàn)在我需要查看的是阿里云oss上的pdf文件(可以通過阿里云文檔獲取oss上的文件的url虏肾,且在oss的基本設(shè)置中可以設(shè)置跨域問題)
  • 首先引入pdf.js
    github地址

    pdf.js

    按照文檔操作后將build/generic/build目錄下的buildweb文件放入到我們vue項目中static文件中(不能放入src)廓啊,這樣我們就引入了pdf.js

  • 首先在vue中創(chuàng)建一個新的組件preview,內(nèi)部為iframe

<template>
  <div class="preview">
    <iframe
      width="100%" height="1000"
      :src='"(這里是你的網(wǎng)站的包含https://的域名)/static/web/viewer.html?file=" + (這里是你想顯示的pdf的url)'></iframe>
  </div>
</template>

創(chuàng)建之后控制臺會報錯出現(xiàn)跨域問題封豪,因為pdf.js不支持跨域訪問谴轮。此時可以將錯誤跨域信息在上一步你引入的文件中查找,然后將其判斷語句注釋掉即可解決這個問題吹埠。最后會發(fā)現(xiàn)pdf出現(xiàn)在這個容器中(忘截圖了)第步,也實現(xiàn)了微信中預覽和分享的功能疮装。


pdf容器
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市粘都,隨后出現(xiàn)的幾起案子廓推,更是在濱河造成了極大的恐慌,老刑警劉巖翩隧,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樊展,死亡現(xiàn)場離奇詭異,居然都是意外死亡堆生,警方通過查閱死者的電腦和手機专缠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淑仆,“玉大人涝婉,你說我怎么就攤上這事≌岬。” “怎么了墩弯?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寞射。 經(jīng)常有香客問我渔工,道長,這世上最難降的妖魔是什么桥温? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任涨缚,我火速辦了婚禮,結(jié)果婚禮上策治,老公的妹妹穿的比我還像新娘。我一直安慰自己兰吟,他們只是感情好通惫,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著混蔼,像睡著了一般履腋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惭嚣,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天遵湖,我揣著相機與錄音,去河邊找鬼晚吞。 笑死延旧,一個胖子當著我的面吹牛拉队,可吹牛的內(nèi)容都是我干的蔓姚。 我是一名探鬼主播涨椒,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼降盹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起珍特,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤届谈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挺智,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祷愉,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年赦颇,在試婚紗的時候發(fā)現(xiàn)自己被綠了二鳄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡沐扳,死狀恐怖泥从,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沪摄,我是刑警寧澤躯嫉,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站杨拐,受9級特大地震影響祈餐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哄陶,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一帆阳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屋吨,春花似錦蜒谤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至敢课,卻和暖如春阶祭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背直秆。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工濒募, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人圾结。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓瑰剃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疫稿。 傳聞我的和親對象是個殘疾皇子培他,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 1. 準備工作 1.1 查看公眾號分享接口權(quán)限 要使用微信SDK必須要有經(jīng)過微信認證的非個人服務(wù)號 登陸服務(wù)號后鹃两,...
    sxplus閱讀 6,218評論 0 2
  • 先引入JS 文件 this.wxShare() 在created里調(diào)用 首先登陸微信公眾號 JSSDK使用步驟 步...
    寄魚予海與你閱讀 6,678評論 1 3
  • 這個名字的來歷很簡單,就是電話被前任拉黑了舀凛,每次到第二十秒的時候就會準時響起“對不起俊扳,您撥打的電話正在通話中,請稍...
    十九歲的梅西閱讀 260評論 2 0
  • 親愛的寶貝猛遍,你知道我有多愛你馋记,自從你離開后我每天都在想你,看你的視頻懊烤,我很自責一度懷疑是自己喂得不好才導致你的死去...
    VC維生素閱讀 175評論 0 1
  • 接龍客棧新年活動 新年大接龍《尋尋覓覓腌紧,緣來是你》成員:小小七茸习、是海綿啊、周小北baby壁肋、龍妮妮 文/小小七 《第...
    小小七閱讀 736評論 8 8