您好,欢迎访问一九零五行业门户网

详解微信jsapi开发如何获取jsapi_ticket

我们在看微信jsapi开发文档发现,想要使用微信jsapi不仅要绑定已备案的域名,而且还需要一大堆接口注入权限验证。本人感觉有点麻烦,但是也没办法,谁让微信这么火呢。
通过config接口注入权限验证配置
所有需要使用js-sdk的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的spa的web app可在每次url变化时进行调用,目前android微信客户端不支持pushstate的h5新特性,所以使用pushstate来实现web app的页面会导致签名失败,此问题会在android6.2中修复)。
上面就是微信官方文档的说明,本来要高高兴兴的去接入微信开发,这下傻眼了,特别是初学者完全蒙了,接下来我们看看微信官方文档给的代码示例:
wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appid: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    noncestr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见附录1
    jsapilist: [] // 必填,需要使用的js接口列表,所有js接口列表见附录2
});
timestamp,noncestr,signature,尼玛 这三个参数什么鬼,appid尚可知道,这三个参数好吧,让我们看附录1,那就看附录1吧,请看下面微信官方文档的附录1说明
jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信js接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
1.参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html
2.用第一步拿到的access_token 采用http get方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=access_token&type=jsapi
看到这里是不是蒙了,什么鬼,预先了解timestamp,noncestr,signature,还必须获取jsapi_ticket,算了,既然官方文档说要获取jsapi_ticket那么就获取吧,在这里呢我只展示java获取jsapi_ticket。代码如下:
package com.test.util;
import java.io.bufferedreader;
import java.io.ioexception;
import java.io.inputstreamreader;
import java.net.malformedurlexception;
import java.net.url;
import java.net.urlconnection;
import net.sf.json.jsonobject;
import com.test.weixin.testacesstoken;
public class jsapiticketutil {
    /***
     * 模拟get请求
     * @param url
     * @param charset
     * @param timeout
     * @return
     */
     public static string sendget(string url, string charset, int timeout)
      {
        string result = ;
        try
        {
          url u = new url(url);
          try
          {
            urlconnection conn = u.openconnection();
            conn.connect();
            conn.setconnecttimeout(timeout);
            bufferedreader in = new bufferedreader(new inputstreamreader(conn.getinputstream(), charset));
            string line=;
            while ((line = in.readline()) != null)
            {
              result = result + line;
            }
            in.close();
          } catch (ioexception e) {
            return result;
          }
        }
        catch (malformedurlexception e)
        {
          return result;
        }
        return result;
      }
     /***
      * 获取acess_token 
      */
     public static string getaccesstoken(){
            string appid=你公众号基本设置里的应用id;//应用id
            string appsecret=你公众号基本设置里的应用密钥;//(应用密钥)
            string url =https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=+appid+&secret=+appsecret+;
            string backdata=testacesstoken.sendget(url, utf-8, 10000);
            string accesstoken = (string) jsonobject.fromobject(backdata).get(access_token);  
            return accesstoken;
     }
    /***
      * 获取jsapiticket
      * 来源 www.vxzsk.com
      * @return
      */
    public static string getjsapiticket(){ 
        //获取token
        string acess_token= jsapiticketutil.getaccesstoken();
        string urlstr = https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=+acess_token+&type=jsapi;  
        string backdata=testacesstoken.sendget(urlstr, utf-8, 10000);  
        string ticket = (string) jsonobject.fromobject(backdata).get(ticket);  
        return  ticket;  
    }  
     public static void main(string[] args) {
        string jsapiticket = jsapiticketutil.getjsapiticket();
        system.out.println(调用微信jsapi的凭证票为:+jsapiticket);
        }
}
把上面的代码直接复制到eclipse或者myeclipse中只想main方法即可,但是这里有个梗?
第58行到65行这段代码是获取access_token的方法,因为要获取ticket需要这个参数,但是这里有两个参数需要读者填写,一个是appid,另一个是appsecret,代码的注释已经说得很明白了,我在这里就不在累述。
以上就是详解微信jsapi开发如何获取jsapi_ticket的详细内容。
其它类似信息

推荐信息