国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

nginx - 微信JSSDK,config執(zhí)行的時(shí)候報(bào)錯(cuò):invalid signature

瀏覽:113日期:2022-06-25 11:22:06

問題描述

1,計(jì)算出來的簽名與微信提供的沙箱一致:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign2,嘗試使用了兩種方法解決,但是還是同樣錯(cuò)誤:1),從本地把URL傳到服務(wù)端,通過ajax獲取服務(wù)端的json數(shù)據(jù),然后填寫wx.config的內(nèi)容;2),從服務(wù)端獲取本次訪問的鏈接3,采用nginx做反向域名代理,但是已經(jīng)針對upstream進(jìn)行了處理結(jié)論:懷疑微信的JSSDK存在bug

問題解答

回答1:

可能需要檢查1) 你是否有在服務(wù)器全局緩存微信的jsticket的,一個(gè)新的jsticket獲得后會刷新掉原來的jsticket(也包括access_token)2) url是否一致,包括query string等3) nonceStr和timestamp是否與簽名時(shí)一致

回答2:

我也懷疑有bug, 在android下invalid signature , 在ios下是正確的。而且在官方調(diào)試頁面是通過的, 不知道樓主現(xiàn)在解決了沒有?

回答3:

也許是url傳入的問題,建議wx.config是通過后臺生成,然后寫到前臺的。

比如我的

import timeimport randomimport stringimport hashlibimport urllib2import jsonfrom sae.kvdb import Clientkvdb = Client()class WXSDK(object): httpHandler = urllib2.HTTPHandler() httpsHandler = urllib2.HTTPSHandler() opener = urllib2.build_opener(httpHandler, httpsHandler) urllib2.install_opener(opener) JSAPI_TICKET_URL = ’https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi’ ACCESS_TOKEN_URL = ’https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}’ def __init__(self, app_id, app_secret, url=None):self.app_id = app_idself.app_secret = app_secretself.url = url def __sendRequest(self, url):return json.loads(urllib2.urlopen(url).read()) def __get_access_token(self):data = kvdb.get(’access_token_key’) or {’expire_time’: 0}now = self.__get_time()if data[’expire_time’] < now: data[’expire_time’] = now + 7000 res = self.__sendRequest(self.ACCESS_TOKEN_URL.format(self.app_id, self.app_secret)) data[’access_token’] = res[’access_token’] kvdb.set(’access_token_key’, data) return res[’access_token’]else: return data[’access_token’] def __get_jsapi_ticket(self):data = kvdb.get(’jsapi_token_key’) or {’expire_time’: 0}now = self.__get_time()if data[’expire_time’] < now: data[’expire_time’] = now + 7000 access_token = self.__get_access_token() res = self.__sendRequest(self.JSAPI_TICKET_URL.format(access_token)) data[’jsapi_ticket’] = res[’ticket’] kvdb.set(’jsapi_token_key’, data) return res[’ticket’]else: return data[’jsapi_ticket’] def __get_time(self):return int(time.time()) def __create_nonce_str(self):return ’’.join(random.choice(string.ascii_letters + string.digits) for _ in range(15)) def get_sign_package(self):options = { ’nonceStr’: self.__create_nonce_str(), ’jsapi_ticket’: self.__get_jsapi_ticket(), ’timestamp’: self.__get_time(), ’url’: self.url}options[’signature’] = Sign(options.copy()).sign()options[’app_id’] = self.app_idreturn optionsclass Sign(object): def __init__(self, options):self.ret = options def sign(self):signature = ’&’.join([’%s=%s’ % (key.lower(), self.ret[key]) for key in sorted(self.ret)])return hashlib.sha1(signature).hexdigest()

然后

@card.route('/')def index(): url = request.base_url if len(request.args) > 0:url = url + '?' + urllib.urlencode(request.args) wx.url = url signature_data = wx.get_sign_package() return render_template('card/index.html', wx=signature_data)

<script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script><script> wx.config({appId: ’{{wx.app_id}}’,timestamp: {{wx.timestamp}},nonceStr: ’{{wx.nonceStr}}’,signature: ’{{wx.signature}}’,jsApiList: [ ’onMenuShareTimeline’, ’onMenuShareAppMessage’, ’onMenuShareQQ’, ’onMenuShareWeibo’] });</script>回答4:

樓主的問題解決了嗎,我也是同樣的問題,反正對比的接口,也用微信的測試工具測試了,就是一直出invalid signature

回答5:

簽名和官方的一樣、 URL也是通過location.href.split(’#’)[0]獲取的。。 也是一直提示 config:invalid signature 公眾號的JS接口安全域名也是配置OK,就是不行。。 求大神幫助、測試地址:http://weixin.zhjckx.com/ApiWeiXin/JsSdk

回答6:

清看我的另一人回答:

/q/1010000002502269/a-1020000002549180X2X

回答7:

我遇到的情況是,在生成簽名時(shí)獲取當(dāng)前url時(shí),用了laravel框架的URL:full()方法。結(jié)果這個(gè)方法會把url中的querystring的順序重排。比如你訪問時(shí)的url是

http://test.com?x=1&a=2

,用URL:full()獲取的結(jié)果是

http://test.com?a=2&x=1

改成老老實(shí)實(shí)用微信官方例子中的:

$protocol = (!empty($_SERVER[’HTTPS’]) && $_SERVER[’HTTPS’] !== ’off’ || $_SERVER[’SERVER_PORT’] == 443) ? 'https://' : 'http://';$url = '$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]';

就OK了。

回答8:

親自修改的,測試ok的。原因是因?yàn)楣俜嚼锏膆ttpGet函數(shù)不能用。

講 jssdk.php 里的這兩句

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);改為 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// 這里改為false, 可以請求https的網(wǎng)頁//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);

標(biāo)簽: 微信
主站蜘蛛池模板: aaaaaa级特色特黄的毛片 | 大尺度福利视频在线观看网址 | 亚洲图片国产日韩欧美 | 国产成人亚洲综合网站不卡 | 日本高清一本二本三本如色坊 | 亚洲国产精品一区二区第四页 | 久久毛片免费看一区二区三区 | 在线三级网址 | 亚洲精品第一第二区 | 97精品国产综合久久久久久欧美 | 欧美—级v免费大片 | 精品国产区一区二区三区在线观看 | 色综合视频一区二区观看 | 国产综合精品久久久久成人影 | 欧美一区二区在线视频 | 黄色三级在线 | 在线免费观看国产 | 男人天堂网址 | 久久er热在这里只有精品85 | 久久精品国产屋 | 久草视频手机在线观看 | 91精品在线免费 | 亚洲欧美精品一中文字幕 | 免费看成人毛片 | 亚洲第一页在线播放 | 真实一级一级一片免费视频 | 久青草免费视频手机在线观看 | 美女福利视频午夜在线 | 男女性高清爱潮视频免费观看 | japanese色系国产在线高清 | 欧美日韩一区二区三区视频播 | 国产欧美日韩在线观看一区二区三区 | 国产精品爱久久久久久久小 | 国产一区二区三区在线观看免费 | 成人国产精品毛片 | 亚洲资源在线观看 | 国产高清精品久久久久久久 | 国产亚洲人成a在线v网站 | 18年大片免费在线观看 | 欧美成人看片一区二区三区尤物 | 欧美日韩精品一区二区三区不卡 |