⑴ 微信 簽名不對 請檢查簽名是否與開放平台上填寫的一致
問題:微信分享時提示「簽名不對,請檢查簽名是否與開放平台上填寫的一致。」
看了下開放平台,簽名填寫的是包名(當時申請時候趕時間就隨便填了),而它的要求則是: 用於對當前應用進行二次身份校驗,開發者可以使用簽名生成工具直接從安裝當前應用的手機中獲取。應用簽名由開發者簽名該應用的keystore文件決定。
所以,用簽名生成工具生成一個吧,官方文檔中有該工具的安裝包:
點擊下載,把apk發到手機上安裝,打開後是這樣的:
輸入你的包名,點擊Get Signature按鈕,則生成了簽名(綠色的):
復制到開放平台,過會兒再調用即可(前提是,項目打包時候生成過簽名,不然,還是不行的,需要重新打包,也就是項目中的簽名需要跟開放平台的簽名一致就可以啦):
⑵ 微信分享 IOS 報invalid signature, android正常
是ios版本的bug
雖然安卓和ios軟體功能一樣
但裡面的代碼邏輯是有差別的
會有可能造成一個版本是正常的
另一個版本會出現bug
⑶ from=timeline&isappinstalled=0 是什麼意思
1、from=timeline&isappinstalled=0:發自微信朋友圈,用戶用手機瀏覽器訪問您的網站,然後將其分享到微信朋友圈中。
2、來自微信的訪問,微信朋友圈分享到騰訊微博時,會再鏈接後面加上from=timeline&isappinstalled=0,而如果被在客戶端中打開,就會多次出現,出現的次數就是你的這個文章被分享的次數。
(3)微信分享signature擴展閱讀:
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信伺服器,請原樣返回echostr參數內容,則接入生效,否則接入失敗。
signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
加密/校驗流程:
1. 將token、timestamp、nonce三個參數進行字典序排序。
2. 將三個參數字元串拼接成一個字元串進行sha1加密。
3. 開發者獲得加密後的字元串可與signature對比,標識該請求來源於微信。
⑷ 自定義微信分享鏈接(使用js-SDK) + 實現預覽pdf
可參考:微信JS-SDK說明文檔 >
此時可能出現白名單錯誤(忘截圖了),需要在微信公眾號中設置錯誤中的IP
注意:access_token和ticket都需要緩存
4. 獲取簽名 signature
將以上內容以鍵值對形式拼接,類似如下
本地引入sha1演算法(需網上查找)
將上述拼接的字元串以參數的形式傳遞到sha1中得到 signature
signature = sha1(拼接完的字元串)
驗證 signature 是否正確 >
將appId,nonceStr,timestamp和signature返回給前端
官網上是這樣描述的:
這時候調用 updateAppMessageShareData , updateTimelineShareData 的時候就可以生效了,具體原理不清楚。。
注意:imgUrl配置有嚴格的要求
尺寸120 x 120,大小不超過10K,不支持GIF格式。必須採用https協議(最好寫完整url),不支持base64。由於我使用的是vue,在webpack打包時圖片小於10k的是會自動打包成base64導致無法正常顯示圖片,因此在webpack.base.config.js中修改默認配置
由於在網頁中直接查看pdf的路徑是無法在微信中查看(安卓)和分享(ios),因此使用pdf插件進行優化 --- pdf.js 。其原理是繪製成canvas,最終在真機上放大時可能出現模糊的問題。
創建之後控制台會報錯出現跨域問題,因為pdf.js不支持跨域訪問。此時可以將錯誤跨域信息在上一步你引入的文件中查找,然後將其判斷語句注釋掉即可解決這個問題。最後會發現pdf出現在這個容器中(忘截圖了),也實現了微信中預覽和分享的功能。