conflg:nvalid signaturdate是什么意思思

收藏,970 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
1,计算出来的签名与微信提供的沙箱一致:
2,尝试使用了两种方法解决,但是还是同样错误:1),从本地把URL传到服务端,通过ajax获取服务端的json数据,然后填写wx.config的内容;2),从服务端获取本次访问的链接
3,采用nginx做反向域名代理,但是已经针对upstream进行了处理
结论:怀疑微信的JSSDK存在bug
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
3月31日 回答
也许是url传入的问题,建议wx.config是通过后台生成,然后写到前台的。
import time
import random
import string
import hashlib
import urllib2
import json
from sae.kvdb import Client
kvdb = 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./cgi-bin/ticket/getticket?access_token={0}&type=jsapi'
ACCESS_TOKEN_URL = 'https://api./cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}'
def __init__(self, app_id, app_secret, url=None):
self.app_id = app_id
self.app_secret = app_secret
self.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']
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']
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_id
return options
class 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./open/js/jweixin-1.0.0.js"&&/script&
wx.config({
appId: '{{wx.app_id}}',
timestamp: {{wx.timestamp}},
nonceStr: '{{wx.nonceStr}}',
signature: '{{wx.signature}}',
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo'
不要错过该问题的后续解决方案
如果你没找到答案,记得登录关注哦,大家会尽全力帮你解决的 ^___^
分享到微博?
关闭理由:
删除理由:
忽略理由:
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
内容质量差,或不适合在本网站出现
无意义讨论型问题
其他原因(请补充说明)
举报理由:
带有人身攻击、辱骂、仇恨等违反条款的内容(请编辑该提问指向已有相同问题)
与已有问题重复
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:为什么秘密潜入2进入的时候提示Fatal error:Invalid QVM format in file:&config_百度知道
为什么秘密潜入2进入的时候提示Fatal error:Invalid QVM format in file:&config
qvm删除了再试试.qvm文件了吗,不过这样你以前的设置就恢复默认了,从头开始?把这个config,打过的那些关都不显示了你替换了别的版本的config,如果你知道那个显示所有关卡的组合键(游戏开始前的菜单位置按左Ctrl+左Shift+F9)就无所谓了。当然
其他类似问题
秘密潜入2的相关知识
按默认排序
其他1条回答
文件错误,不是原版,换吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁cisco 交换机3500开启路由功能的命令是什么 在(config)#模式下输入 ip routing显示是invalid input de?_百度知道
cisco 交换机3500开启路由功能的命令是什么 在(config)#模式下输入 ip routing显示是invalid input de?
enconfig tip routing然后就提示invalid input detected at ^ marker
提问者采纳
3500?应该是老型号的交换机吧,不支持这个命令的
估计是的 那该怎么办?
用不了呗 那就是个普通二层交换机
提问者评价
好的 我明白了 谢谢
其他类似问题
按默认排序
其他2条回答
这是说你的命令有错误,^就是你错误的地方好好检查下 是不是哪里输错了
我就是不知道哪里输错了
全局模式下
ip routing
没有问题的
好好看看不然把交换机重启下
升级IOS到EMI
inv的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁http://forums.gentoo.org/viewtopic.php?t=27486
This is usually caused by
doing an emerge world that includes a gcc upgrade.
What happens is, the
new gcc is compiled, but the ebuild fails to switch your system to the
new compiler. Before trying any of the solutions above, try doing:
# gcc-config
You should be presented with a list of GCC versions that are available
on your machine. Each version has a number next to it. Find the latest
version of gcc's number, (for example, 1), and type:
# gcc-config 1
...to switch to the new compiler. Then,
# source /etc/profile
... and continue emerging or whatever you were doing.
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:62210次
积分:1453
积分:1453
排名:第13478名
原创:86篇
转载:33篇
(2)(7)(11)(12)(9)(9)(10)(1)(3)(7)(1)(8)(2)(1)(1)(2)(24)(4)(2)(4)(1)}

我要回帖

更多关于 print name是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信