Maison  >  Article  >  Applet WeChat  >  Explication détaillée de la façon d'obtenir jsapi_ticket dans le développement WeChat jsapi

Explication détaillée de la façon d'obtenir jsapi_ticket dans le développement WeChat jsapi

高洛峰
高洛峰original
2017-03-26 14:00:512369parcourir

Nous avons examiné la documentation de développement de WeChat jsapi et avons constaté que si vous souhaitez utiliser WeChat jsapi, vous devez non seulement lier un nom de domaine enregistré, mais également effectuer de nombreuses vérifications des autorisations d'injection d'interface. Je trouve cela un peu gênant, mais je ne peux rien y faire. Qui rend WeChat si populaire ?

Injecter la configuration de vérification des autorisations via l'interface de configuration

Toutes les pages qui doivent utiliser JS-SDK doivent d'abord injecter des informations de configuration, sinon elles ne seront pas appelées (la même URL doit seulement être appelée une fois, pour modifier l'URL. L'application Web SPA peut être appelée à chaque fois que l'URL change. Actuellement, le client Android WeChat ne prend pas en charge la nouvelle fonctionnalité H5 de pushState. Par conséquent, l'utilisation de pushState pour implémenter la page de l'application Web entraînera l'échec de la signature. . Ce problème sera résolu dans Android 6.2).

Ce qui précède est la description du document officiel de WeChat. Au départ, j'allais accéder avec plaisir au développement de WeChat, mais maintenant je suis abasourdi, surtout les débutants qui sont complètement confus. Ensuite, jetons un œil au code. donné par le document officiel de WeChat Exemple :

wx.config({

    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

    appId: '', // 必填,公众号的唯一标识

    timestamp: , // 必填,生成签名的时间戳

    nonceStr: '', // 必填,生成签名的随机串

    signature: '',// 必填,签名,见附录1

    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

});

wx.config({

debug: true, // Lorsque le mode débogage est activé, les valeurs de retour de tous les appels API seront alertées côté client. Si vous souhaitez afficher les paramètres entrants, vous pouvez l'ouvrir côté PC. les informations sur les paramètres seront imprimées via le journal, et elles ne seront imprimées que côté PC

appId : '', // Obligatoire, l'identifiant unique du compte officiel

timestamp : , // Obligatoire, l'horodatage de génération de la signature

nonceStr : '', // Obligatoire, générer une chaîne aléatoire de signature

signature : '', // Obligatoire, signature, voir Annexe 1

jsApiList : [] // Obligatoire, l'interface JS qui doit être utilisée List, voir Annexe 2 pour la liste de toutes les interfaces JS
}); td>
timestamp, nonceStr, signature, ces trois. Qu'est-ce que c'est que l'appid peut toujours être connu. Ces trois paramètres sont corrects. Regardons l'annexe 1. . Regardons l'annexe 1. Veuillez consulter la description de l'annexe 1 du document officiel WeChat ci-dessous jsapi_ticket Avant de générer une signature, vous devez d'abord comprendre que jsapi_ticket est un ticket temporaire utilisé par. comptes publics pour appeler l'interface WeChat JS. Dans des circonstances normales, la période de validité de jsapi_ticket est de 7 200 secondes et est obtenue via access_token. Étant donné que le nombre d'appels d'API pour obtenir jsapi_ticket est très limité, les actualisations fréquentes de jsapi_ticket entraîneront des appels d'API restreints et affecteront leur propre activité. Les développeurs doivent mettre en cache jsapi_ticket globalement dans leurs propres services. . 1. Référez-vous au document suivant pour obtenir access_token (valable 7200 secondes, les développeurs doivent mettre en cache access_token globalement dans leurs propres services) : ../15/54ce45d8d30b6bf6758f68d2e95bc627.html2. la première étape Le access_token obtenu utilise la méthode http GET pour demander jsapi_ticket (valable 7200 secondes, les développeurs doivent mettre en cache jsapi_ticket globalement dans leurs propres services) : https://api.weixin.qq.com/cgi-bin/ticket/getticket ?access_token= ACCESS_TOKEN&type=jsapiÊtes-vous confus quand vous voyez ça ? Bon sang, vous devez connaître l'horodatage, nonceStr, la signature à l'avance, et vous devez également obtenir jsapi_ticket, puisque le document officiel. dit d'obtenir jsapi_ticket, puis de l'obtenir ici. Je montre seulement comment Java obtient jsapi_ticket. Le code est le suivant :

package com.test.util;

import java.io.BufferedReader;

import java.io.IOException;

importer java.io.InputStreamReader ;

importer java.net.MalformedURLException;

importer java.net.URL;

importer java.net.URLConnection ;

import net.sf.json.JSONObject;

import com.test.weixin.TestAcessToken;

classe publique JsapiTicketUtil {

    /***

* Simuler la demande d'obtention

* @param url

* @param charset

* @param timeout

* @return

*/

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

      {

        String result = "";

        essayer

        {

          URL u = new URL(url);

          essayer

          {

            URL Connexion conn = u.openConnection() ;

            conn.connect();

            conn.setConnectTimeout(timeout);

           BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStr eam(), jeu de caractères)) ;

            String line="";

             while ((line = in.readLine()) != null)

            {

               résultat = résultat + line;

            }

             in.close();

           catch (IOException e) {

            return result;

}

        }

        catch (MalformedURLException e)

        {

           retourner le résultat ;

         }

        retourner le résultat ;

      }

     /***

* Obtenez un access_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");  

            retourner accessToken ;

     }

    /***

      * 获取jsapiTicket

      * 来源 www .vxzsk.com

* @return

*/

public static String getJSApiTicket(){

//Obtenir le jeton

String access_to ken= 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"); billet aller-retour ;

}

public static void main(String[] args) {

String jsapiTicket = JsapiTicketUtil.getJSApiTicket();

Système. out .println("Le ticket pour appeler WeChat jsapi est : "+jsapiTicket); Le code ci-dessus peut être directement copié sur Eclipse ou myeclipse et seule la méthode principale est requise, mais il y a une astuce ici ?

Le code des lignes 58 à 65 est la méthode pour obtenir access_token, car ce paramètre est obligatoire pour obtenir le ticket, mais il y a deux paramètres qui doivent être renseignés par le lecteur, l'un est appid, le l'autre est appSecret, le code Les commentaires ont déjà été très clairs, je ne les répéterai donc pas ici.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn