code: def generate_jsapi_signature(self, timestamp, noncestr, url, jsapi_ticket=None):
          
          if not jsapi_ticket:
              jsapi_ticket = self.conf.jsapi_ticket
          data = {
              'jsapi_ticket': jsapi_ticket,
              'noncestr': noncestr,
              'timestamp': timestamp,
              'url': url,
          }
          keys = list(data.keys())
          keys.sort()
          data_str = '&'.join(['%s=%s' % (key, data[key]) for key in keys])
          signature = hashlib.sha1(data_str.encode('utf-8')).hexdigest()
          return signature
docs: 使用 jsapi_ticket 对 url 进行签名
          :param timestamp: 时间戳
          :param noncestr: 随机数
          :param url: 要签名的 url，不包含 # 及其后面部分
          :param jsapi_ticket: (可选参数) jsapi_ticket 值 (如不提供将自动通过 appid 和 appsecret 获取)
          :return: 返回sha1签名的hexdigest值