Etapas para usar o JS-SDK no projeto

 

Etapas para usar o JS-SDK no projeto

Histórico da demanda: abra a página do site no navegador WeChat e compartilhe-a com amigos ou círculo de amigos através do botão de compartilhamento que acompanha o navegador WeChat.Você pode personalizar as fotos, descrições e outras informações relacionadas.

Implementação: use JS-SDK, use a API fornecida pelo WeChat para configurar os parâmetros. De fato, todo o processo é muito simples, principalmente porque este xiaobai não usou o JS-SDK antes, então demorou algum tempo para explorar como usá-lo. Documentação oficial do JS-SDK

Introdução da etapa:

  1. Vincule o nome do domínio, a descrição do documento é mostrada abaixo.

     Note-se que o nome do domínio deve ser verificado pelo registro ICP . Além disso, após o download do arquivo de certificado, faça o upload do arquivo no servidor, onde o arquivo pode ser carregado no servidor front-end ou no servidor back-end, desde que possa ser acessado e preencha o caminho de upload correspondente.

    2. Introduza os arquivos JS. Existem duas maneiras de introduzir arquivos JS:

        Método 1: Conforme mostrado na documentação oficial, crie uma tag de script e faça referência ao arquivo JS correspondente. Quando em uso, você pode escrever uma função especificamente para importar arquivos JS.

function importWx(callback) {
    if (window.wx) {
        callback && callback()
    } else {        
        var url = "/static/js/utils/jweixin-1.4.0.js";
        var script = document.createElement("script");
        script.src = url
        document.body.appendChild(script);
        if(script.addEventListener){
          script.addEventListener("load", callback, false);
        } else if (script.attachEvent){
          script.attachEvent("onreadystatechange", function(){
        
            var target = window.event.srcElement;
        
             if(target.readyState == "loaded" || target.readyState == "complete"){
              callback && callback.call(target);
            }
        
          });
        }
    }
}

        Método 2: Use uma biblioteca de terceiros que encapsule js-sdk.

       

//安装
npm install weixin-js-sdk

//使用
const wx = require("weixin-js-sdk");

    3. Execute a autenticação de permissão de interface, a descrição oficial do documento é mostrada na figura a seguir:

Etapas detalhadas do algoritmo de assinatura . Como a autenticação de permissão da interface precisa obter a assinatura primeiro, e o processo de obtenção da assinatura envolve a obtenção de informações confidenciais, como access_token, esse processo é realizado no back-end e, em seguida, os colegas de classe do back-end fornecem uma interface para retornar o carimbo de data / hora, nonceStr, A assinatura, jsapi_ticket e outros campos permitem que os alunos front-end se autentiquem.

    4. Após a verificação, você pode chamar a interface da API do WeChat.

//wx-share.js
export const initWx = (wxConfig, shareConfig, cb) => {
  if (typeof window != "undefined") {
    const wx = require("weixin-js-sdk");
    wx.config(
      Object.assign(
        {
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: "", // 必填,公众号的唯一标识
          timestamp: "", // 必填,生成签名的时间戳
          nonceStr: "", // 必填,生成签名的随机串
          signature: "", // 必填,签名
          jsApiList: [
            "updateTimelineShareData",
            "onMenuShareTimeline",
            "updateAppMessageShareData",
            "onMenuShareAppMessage"
          ] // 必填,需要使用的JS接口列表
        },
        wxConfig
      )
    );

    wx.ready(function() {
      //需在用户可能点击分享按钮前就先调用
      //分享到朋友圈
      wx.updateTimelineShareData &&
        wx.updateTimelineShareData(
          Object.assign(
            {
              title: "", // 分享标题
              link: "", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: "" // 分享图标
            },
            shareConfig
          ),
          function(res) {
            //这里是回调函数
            cb && cb(res);
          }
        );
      wx.onMenuShareTimeline &&
        wx.onMenuShareTimeline(
          Object.assign(
            {
              title: "", // 分享标题
              link: "", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: "", // 分享图标
              success: function() {
                // 用户点击了分享后执行的回调函数
              }
            },
            shareConfig
          )
        );
      //分享给朋友
      wx.updateAppMessageShareData &&
        wx.updateAppMessageShareData(
          Object.assign(
            {
              title: "", // 分享标题
              desc: "", // 分享描述
              link: "", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: "", // 分享图标
              success: function() {
                // 设置成功
              }
            },
            shareConfig
          )
        );
      wx.onMenuShareAppMessage &&
        wx.onMenuShareAppMessage(
          Object.assign(
            {
              title: "", // 分享标题
              desc: "", // 分享描述
              link: "", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: "", // 分享图标
              type: "", // 分享类型,music、video或link,不填默认为link
              dataUrl: "", // 如果type是music或video,则要提供数据链接,默认为空
              success: function() {
                // 用户点击了分享后执行的回调函数
              }
            },
            shareConfig
          )
        );
    });

    wx.error(function(res) {
      console.log(res);
      // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    });
  }
};

    5. Método de uso: O InitWx pode ser introduzido na página em que o compartilhamento do WeChat é necessário. Por exemplo:

import React, { Component } from "react";
import axios from 'axios';
import { initWx } from "../../../../utils/wx-share";

class NewsArticleComponent extends Component {
    componentDidMount() {
        axios({
        	method: 'get',
       		url: "后端提供的返回签名接口"
    	}).then(res => {
            if(res && res.code === 0 && res.data){
                initWx({
                    ...res.data
                },{
                    title:"自定义title",
                    keywords:"自定义keywords",
            	    desc: "自定义描述内容",
            	    imgUrl: "自定义图片"
                })
            }
        });
    }
    render() {
        return (
        	<div>我要分享啦~~~</div>
        )
    }
}

Imagem de efeito:

        Sucesso aqui! De fato, essa parte da lógica e do código é muito simples, principalmente porque leva tempo para explorar como usá-lo, por isso espero que este post reduza o tempo de exploração de todos e faça progressos junto com você!

Publicado 50 artigos originais · Curtidas5 · Visitas: mais de 20.000

Acho que você gosta

Origin blog.csdn.net/qq_31207499/article/details/102664651
Recomendado
Clasificación