国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
Einfache Implementierung der WeChat-Sharing-Backend-Schnittstelle
Heim WeChat-Applet WeChat-Entwicklung Der neueste allgemeine Prozess zur Implementierung der WeChat-Sharing-Back-End-Schnittstelle

Der neueste allgemeine Prozess zur Implementierung der WeChat-Sharing-Back-End-Schnittstelle

Aug 01, 2018 am 11:36 AM

Einfache Implementierung der WeChat-Sharing-Backend-Schnittstelle

Der allgemeine Prozess dieser Schnittstelle ist: Der Benutzer erstellt einen Zeitstempel, eine zuf?llige Zeichenfolge und die URL der Seite Das muss derzeit geteilt werden Drei Variablen, dann verwenden Sie Ihre App-ID und APPsecret als Anforderungsparameter, um access_token zu erhalten, dann erhalten Sie jsapi_ticket basierend auf access_token und verschlüsseln und überprüfen Sie das erhaltene jsapi-Ticket und signieren Sie die drei von Ihnen erstellten Variablen Der Prozess ist wie folgt: Der Schlüsselwert-ASCII-Code wird in aufsteigender Reihenfolge sortiert und die Daten werden im JSON-Format gekapselt und an die Front-End-JS-Seite gesendet. Der spezifische Vorgang ist wie folgt; Beim Entwicklungsprozess ist zu beachten, dass WeChat jeden Tag den Zugriff auf den Zugriff auf den Server begrenzt.

Da das Zeitlimit 7200 Sekunden betr?gt, haben wir ein Urteil gef?llt und das gleiche Token 2 Stunden nach der Generierung eines Tokens verwendet.

Dies ist nur eine kleine Schnittstelle, daher haben wir uns entschieden, die letzte Generierungszeit zu ?ndern. Und das Token wird als statische Variable gespeichert,

public class WeiXinShareAction extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private Integer main_count = 888;
    private String flag = "1";
    private Log logger = LogFactory.getLog(this.getClass());

    private String filePath = "/B.txt";

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        JsonObject jsonObject = new JsonObject();

        String ticket = null;
        String[] wxInfo = new String[] { "wx007344f87ae48300", "5442edc712b6846bdd1c058b7f2318fe" };
        WeiXinUtil wxu = new WeiXinUtil();
        String ticketResString;

        try {

            ticketResString = wxu.getShareJsapiTicket(wxInfo);
            if (StringUtils.isNotEmpty(ticketResString)) {
                JSONObject ticketJSONObject = JSONObject.fromObject(ticketResString);
                if (ticketJSONObject.getInt("errcode") == 0) {
                    ticket = JSONObject.fromObject(ticketResString).getString("ticket");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (StringUtils.isEmpty(ticket)) {
            jsonObject.addProperty("errcode", 10002);
            jsonObject.addProperty("errmsg", "ticket_error");
            this.responseWrite(jsonObject.toString(), response);
            return;
        }
        String noncestr = this.createNonceStr();
        int timestamp = this.createTimestamp();
        String requestRefererURL = request.getHeader("referer");
        flag = request.getParameter("temp");
        logger.info("flag--------------" + flag);
        //這里是保存點擊次數(shù)
        //沒有數(shù)據(jù)庫的情況下 保證服務(wù)重啟后點擊次數(shù)不清零
        //利用線程鎖 使用IO流 對點擊次數(shù)進行修改保存
             Thread_readFile thf4 = new Thread_readFile();
             thf4.start();

        logger.warn("requestRefererURL: " + requestRefererURL);

        String signature = this.createSignature(noncestr, ticket, timestamp, requestRefererURL);

        jsonObject.addProperty("countNum", main_count);//點擊次數(shù)
        jsonObject.addProperty("errcode", 0);//
        jsonObject.addProperty("errmsg", "");//
        jsonObject.addProperty("wxuser", wxInfo[0]); // appId
        jsonObject.addProperty("timestamp", timestamp);//時間戳
        jsonObject.addProperty("noncestr", noncestr);//隨機字符串
        jsonObject.addProperty("signature", signature);//簽名
        response.setHeader("Access-Control-Allow-Origin", "*");
        this.responseWrite(jsonObject.toString(), response);
    }
    private void responseWrite(String content, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("utf-8");
            response.getWriter().write(content);
        } catch (Exception e) {
            logger.error("responseWrite error in WeiXinShareAction", e);
        }
    }
}

Get jsapiTicket gem?? access_token

    /**
     * 微信分享,獲取access_token
     */
    private String getWeiXinAccessToken(String[] wxInfo) throws Exception {
         //得到當(dāng)前時間
        long current_time = System.currentTimeMillis();
        // 每次調(diào)用,判斷expires_in是否過期,如果token時間超時,重新獲取,expires_in有效期為7200
        if ((current_time - last_time) / 1000 >= 7200) {

            logger.info("第一次訪問"+current_time);
            logger.info("(current_time - last_time) / 1000===="+(current_time - last_time) / 1000);

            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wxInfo[0]
                    + "&secret=" + wxInfo[1];

            String result = this.httpReqExecute(url);
            this.logger.warn("from weixin api accessToken: " + result);
            try {
                last_time = current_time; 
                if (StringUtils.isNotEmpty(result)) {
//                   解析respContent,并獲取其中的更新的key,
                    accessToken = JSONObject.fromObject(result).getString("access_token");
//                  保存access_token
                    return accessToken;
                }
            } catch (Exception e) {
                logger.error("getAccessToken error in WeiXinShareAction", e);
            }
        }else{
            logger.info("第二次訪問"+last_time);
            logger.info("(current_time - last_time) / 1000===="+(current_time - last_time) / 1000);
            logger.info("from weixin api accessToken:"+accessToken);
            return accessToken;
        }
        return null;
    }

Http-Remote-Aufruf

    /**
     * 微信分享,獲取jsapiTicket
     */
    public String getShareJsapiTicket(String[] wxInfo) throws Exception {

        String access_Token = this.getWeiXinAccessToken(wxInfo);

        if (StringUtils.isEmpty(access_Token)) { // 獲取 accessToken 失敗
            //this.logger.warn(siteId + " accessToken is empty.");
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("errcode", "10000");
            jsonObject.addProperty("errmsg", "access_error");
            return jsonObject.toString();
        }

        String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_Token + "&type=jsapi";
        String jsapiTicket = this.httpReqExecute(url);
        this.logger.warn(" from weixin api jsapiTicket is: " + jsapiTicket);

        if (StringUtils.isNotEmpty(jsapiTicket)) {
            return jsapiTicket;
        }
        return null;
    }

Erfolgreich zurückkehren

    private String httpReqExecute(String url) {
        String result = "";
        DefaultHttpClient httpclient = null;
        try {
            httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            // 執(zhí)行
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            if (entity != null && response.getStatusLine().getStatusCode() == 200) {
                result = EntityUtils.toString(entity, "UTF-8");
            }
        } catch (Exception e) {
            logger.error(" WeiXinShareAction 調(diào)用微信 API 失??!", e);
        } finally {// 關(guān)閉連接,釋放資源
            httpclient.getConnectionManager().shutdown();
        }
        return result;
    }

Verwandte Artikel:

Node.js in WeChat JS implementieren- SDK-Backend-Schnittstelle

So rufen Sie die Schnittstelle der freigegebenen Seite auf der WeChat h5-Seite auf

Javascript – Wie lautet die Schnittstellenadresse der Freigabe für WeChat? WeChat Moments QQ-Freunde auf dem Handy?

?hnliche Videos:

Video-Tutorial zur Sekund?rentwicklung der ?ffentlichen WeChat-Plattformschnittstelle

Das obige ist der detaillierte Inhalt vonDer neueste allgemeine Prozess zur Implementierung der WeChat-Sharing-Back-End-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276