日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

jssdk分享设置_JSSDK自定义分享

發布時間:2024/7/19 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jssdk分享设置_JSSDK自定义分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

web:

1、引入JS文件:

http://res.wx.qq.com/open/js/jweixin-1.4.0.js(支持https)

http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)

2、獲取簽名等參數

wx.config({

debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。

appId: '', // 必填,公眾號的唯一標識

timestamp: , // 必填,生成簽名的時間戳

nonceStr: '', // 必填,生成簽名的隨機串

signature: '',// 必填,簽名

jsApiList: [] // 必填,需要使用的JS接口列表

});

service:

1、注冊微信公眾號,然后獲取對應的appId和AppSecret,添加IP白名單和JS安全域名

2、獲取access_token

https請求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

返回參數:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

7200秒access_token過期,所以記得一定緩存你的access_token

3、根據access_token獲取jsapi_ticket

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

返回參數

{"errcode":0,"errmsg":"ok","ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA","expires_in":7200}

同樣,7200秒jsapi_ticket過期,所以記得一定緩存你的jsapi_ticket

jsapi_ticket和access_token一定要是同時有效的,不然會出錯

4、簽名算法

簽名生成規則如下:參與簽名的字段包括noncestr(隨機字符串), 有效的jsapi_ticket, timestamp(時間戳), url(當前網頁的URL,不包含#及其后面部分) 。對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串string1。這里需要注意的是所有參數名均為小寫字符。對string1作sha1加密,字段名和字段值都采用原始值,不進行URL 轉義。

隨機字符串:

''.join(random.choice(string.ascii_letters + string.digits)for _in range(15))

時間戳:

int(time.time())

URL:

當前網頁的完整URL,確保你獲取用來簽名的url是動態獲取的,如果是html的靜態頁面在前端通過ajax將url傳到后臺簽名,前端需要用js獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent),因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享后的頁面簽名失敗

加上jsapi_ticket生成string1:

ret = {nonceStr=Wm3WZYTPz0wzccnWjsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qgtimestamp=1414587457url=http://mp.weixin.qq.com?params=value}

對所有待簽名參數按照字段名的ASCII 碼從小到大排序:

string ='&'.join(['%s=%s' % (key.lower(), ret[key])for key in sorted(ret)])

簽名:(Python需要編碼一次):

signature =hashlib.sha1(string.encode('utf8')).hexdigest()

這里就得到最終結果了,可用微信提供的工具進行校驗

5、錯誤排查:

1.確認config中nonceStr(js中駝峰標準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。

2.確認url是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'后面的GET參數部分,但不包括'#'hash后面的部分。

3.確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。

4.確保一定緩存access_token和jsapi_ticket。

5.確保你獲取用來簽名的url是動態獲取的,動態頁面可參見實例代碼中php的實現方式。如果是html的靜態頁面在前端通過ajax將url傳到后臺簽名,前端需要用js獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent),因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享后的頁面簽名失敗。

Tip:大多數invalid signature是因為前段網頁的URL和后端簽名的URL不一樣導致的,按照上文第5點進行確認

總結

以上是生活随笔為你收集整理的jssdk分享设置_JSSDK自定义分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。