詳解微信jsapi開發如何取得jsapi_ticket

高洛峰
發布: 2017-03-26 14:00:51
原創
2330 人瀏覽過

我們在看微信jsapi開發文件發現,想要使用微信jsapi不僅要綁定已備案的域名,而且還需要一大堆介面注入權限驗證。本人覺得有點麻煩,但是也沒辦法,誰讓微信這麼火爆呢。

透過config介面注入權限驗證配置

所有需要使用JS-SDK的頁面必須先註入設定訊息,否則將無法呼叫(同一個url只需呼叫一次,對於變化url的SPA的web app可在每次url變化時進行呼叫,目前Android微信客戶端不支援pushState的H5新特性,所以使用pushState來實現web app的頁面會導致簽章失敗,此問題會在Android6.2中修復)。

上面就是微信官方文件的說明,本來要高高興興的去接入微信開發,這下傻眼了,特別是初學者完全蒙了,接下來我們看看微信官方文件給的程式碼範例:

jsapi_ticket

#wx.config({

    debug : true, // 開啟調試模式,調用的所有api的回傳值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數資訊會透過log打出,僅在pc端時才會列印。 : '', // 必填,產生簽章的隨機串

    signature: '',// 必填,簽章,請參閱附錄1

    jsApiList: [ // 

#    jsApiList: [需要使用的JS介面列表,所有JS介面列表見附錄2

});

#timestamp,nonceStr,signature,尼瑪這三個參數什麼鬼,appid尚可知道,這三個參數好吧,讓我們看附錄1,那就看附錄1吧,請看下面微信官方文檔的附錄1說明
在產生簽章之前必須先了解jsapi_ticket,jsapi_ticket是公眾號用來呼叫微信JS介面的暫存票據。正常情況下,jsapi_ticket的有效期限為7,200秒,透過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;

導入java.io.InputStreamReader;

導入java.net.MalformedURLException;

導入java.net.URL;

##導入java.net.URLConnection;

import net.sf.json.JSONObject;

import com.test.weixin.TestAcessToken;

public class JsapiTicketUtil {

    /***

     * 模擬get請求

     * @param url

     * @param 

     */

     public static String sendGet(String url, String charset, int timeout)

         嘗試

        {

          URL u = new URL(url);

##            URLConnection conn = u.openConnection() ;

            conn.connect();

            con new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)) ;

            String line="";

            .  {

              結果 = 結果+ line ;

            }

            in.close();#1           返回結果;

# }

        }

        catch (MalformedURLException e)

           }

        以回復結果為;

      }

     /***

      * 取得acess_token 

      */

     public static String getAccessToken( String##  public static String get應用id";//應用ID

            String appSecret="在對在公眾/api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";

        ", 10000);

            String accessToken = (String) JSONObject.fromObject(backData).get("access_token");  

            return accessToken;

     }

    /  www.vxzsk.com

      * @return

      */

    public static String getJSApiTicket(  String acess_token= JsapiTicketUtil.getAccessToken( );

        String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+acess_token+"&type=jsapi backData=TestAcessToken.sendGet(urlStr, "utf-8", 10000);  

        String ticket   return ticket;  

    }  

#     public static void main(String[] args) {

##        System.out .println("調用微信jsapi的憑證票為:"+jsapiTicket);

#        }

}

}

#}

#####################################################################號上面的程式碼直接複製到Eclipse或是myeclipse中只想main方法即可,但這裡有個梗? ######第58行到65行這段程式碼是取得access_token的方法,因為要取得ticket需要這個參數,但是這裡有兩個參數需要讀者填寫,一個是appid,另一個是appSecret,程式碼的註釋已經說得很明白了,我在這裡就不在累述。 ###

以上是詳解微信jsapi開發如何取得jsapi_ticket的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!