微信公众号分享_微信公众号-- 微信分享功能唤起微信 - CSDN
精华内容
参与话题
  • 微信公众号中经常遇到的问题就是分享链接到微信朋友圈 微信好友一类的需求。 下边走一下需要操作的流程 1.首先再项目中(一般就放到自己的公共文件中引入即可,vue中引入到index.html中)引入微信js 链接。 目前最高...

    微信公众号中经常遇到的问题就是分享链接到微信朋友圈 微信好友一类的需求。
    下边走一下需要操作的流程
    1.首先再项目中(一般就放到自己的公共文件中引入即可,vue中引入到index.html中)引入微信js 链接。

    目前最高版本应该是1.4.0
    <script type="text/JavaScript" src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
    

    2.在对应需要的文件内添加微信分享的方法

    sharewxinit: function (title, content, imgUrl, shareUrl) {
         var vm = this;
         var baseUrl = encodeURIComponent(location.href.split('#')[0]);
         var jsApiList = "checkJsApi,onMenuShareAppMessage,onMenuShareTimeline";
         vm.axios.post("/wx/jsapi/jsapiSignature", {
               url: baseUrl,
               debug: false,
               jsApiList: jsApiList
       	 }).then((res) => {
    	       var data = res.data.data;
    	       console.log(data);
    	       wx.config(eval("(" + data + ")"));
         });
        wx.ready(function () {
       		 //分享到朋友圈的
            wx.onMenuShareTimeline({
                  title: title,
                  link: shareUrl,
                  imgUrl: imgUrl,
                  success: function () {
                    vm.shareShow = false;
              	}
            });
            //分享给朋友的
            wx.onMenuShareAppMessage({
                title: title,
                desc: content,
                link: shareUrl,
                imgUrl: imgUrl,
                type: '',
                dataUrl: '',
                success: function (da2) {
                  vm.shareShow = false;
                }
            });
        });
    },
    

    3.调用方法

    //在方法中需要传入四个参数 第一个是标题,第二个是内容,第三个是 图片logo,第四个是要跳转到的链接(shareurl,自行定义跳转链接)
    在这里插入图片描述

    如下:
    this.sharewxinit("推荐您成为墨林艺术艺术家", "推荐您成为墨林艺术艺术家", "http://image.molinmall.com/agent/logo.png", shareurl);
    

    效果如下:
    在这里插入图片描述在这里插入图片描述
    一般做到这三部就没有问题了,
    需要注意的点:
    进入这个页面的时候 需要使用链接跳转。a标签的href这种 或者 window.localtion.href=" "即可。
    vue项目中切不可路由跳转。会出现链接跳转的路径不对

    还有一个经历分享:
    上次用的时候 接收到这样的信息
    在这里插入图片描述
    在这里插入图片描述
    更新1.4.0版本, 而且接口的名称有变,
    使用时,我们将版本升级,接口名称更新。但是升级之后,会遇到bug,并不是我们想要的效果。 又不得不将接口名称改回去,但是版本就仍保留了最高的1.4.0
    之后如有解决办法之后再来追加更新

    展开全文
  • 前端 引入js <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript"> $(function(){ $('.wyh_pro...

    前端

    引入js

    <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

    <script type="text/javascript">

            $(function(){
                $('.wyh_pro').click(function() {
                    $(this).hide();
                });
                $.ajax({
                    url:'<?=site_url('api/api_wechat/jsapi_config_params');?>',
                    type:'post',
                    data:{url:'<?=$url;?>'},
                    dataType:'json',
                    async:false,
                    success: function(res) {
                        wx.config({
                            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                            appId: res.data.appid, // 必填,公众号的唯一标识
                            timestamp: res.data.timestamp, // 必填,生成签名的时间戳
                            nonceStr: res.data.noncestr, // 必填,生成签名的随机串
                            signature: res.data.signature,// 必填,签名
                            jsApiList: [
                            'checkJsApi',  
                            'onMenuShareTimeline', 
                            'onMenuShareAppMessage', 
                            'onMenuShareQQ',  
                            'onMenuShareWeibo' 
                            ]
                        });
                    }
                });
                wx.ready(function () {     
            
                    wx.onMenuShareAppMessage({//分享朋友    
                        title: '<?=$_SESSION['user']['tenant_name']?>',    
                        desc: '<?=$_SESSION['user']['tenant_name']?>分享',    
                        link: '<?=site_url('wechat/main/enter/').$tenant_id;?>',    
                        // imgUrl: '<?=base_url();?>media/wechat/luckdraw/img/logo.png'
                    });  
                    wx.onMenuShareTimeline({//分享朋友圈  
                        title: '<?=$_SESSION['user']['tenant_name']?>',    //标题
                        desc: '<?=$_SESSION['user']['tenant_name']?>分享',    //内容
                        link: '<?=site_url('wechat/main/enter/').$tenant_id;?>',    //页面
                        // imgUrl: '<?=base_url();?>media/wechat/luckdraw/img/logo.png'//logo图片
                    });    
                });


            });

    </script>

     

    后台

        /**
         * wechat
         * 获取jsapi config参数
         */
        public function jsapi_config_params() {
            $sign_data = [];
            $sign_data['jsapi_ticket'] = $this->get_jsapi_ticket($_SESSION['user']['tenant_id']);//获取jsapi_ticket
            $this->return['data']['noncestr'] = $sign_data['noncestr'] = md5(rand(100000,999999));//生成noncestr
            $this->return['data']['timestamp'] = $sign_data['timestamp'] = time();//生成timestamp
            $this->return['data']['url'] = $sign_data['url'] = $this->input->post('url');//生成url
            $this->return['data']['signature'] = $this->get_jsapi_sign($sign_data);//生成signature
            $this->return['data']['appid'] = $this->app_id;//这是appid
            $this->result();

        }

    //验证签名

        private function get_jsapi_sign($data) {
            ksort($data);
            $tmpSign = $this->arrToTempStr($data);
            $sign = strtolower(sha1($tmpSign));
            return $sign;

        }

        /**
         * wechat
        * 获取当前jsapi_ticket
        */

        public function get_jsapi_ticket($tenant_id) {

        //将jsapi_ticket存入数据库$tenant_id为数据库的唯一标识数据库表结构如下

        

            $this->load->model('system_wechat_jsapi_tickets_model','system_wechat_jsapi_tickets');

    //查询出jsapi_ticket是否存在

            $res = $this->system_wechat_jsapi_tickets->find(['tenant_id' => $tenant_id]);

    //不存在就创建一条

            if (!$res || !is_array($res)) {

                $jsapi_ticket = $this->get_new_jsapi_ticket($tenant_id);//获取一个新的jsapi_ticket

            //在数据库增加一条新的数据

                $this->system_wechat_jsapi_tickets->create(['jsapi_ticket' => $jsapi_ticket,'time' => date('Y-m-d H:i:s'),'tenant_id' => $tenant_id]);
                return $jsapi_ticket;//返回jsapi_ticket
            } else if (time() - strtotime($res['time']) > 7150) {//如果生成的jsapi_ticket时间超过7200秒就更改jsapi_ticket
                $jsapi_ticket = $this->get_new_jsapi_ticket($tenant_id);
                $this->system_wechat_jsapi_tickets->update(['jsapi_ticket' => $jsapi_ticket,'time' => date('Y-m-d H:i:s')],['id' => $res['id']]);
                return $jsapi_ticket;//返回jsapi_ticket
            } else {
                return $res['jsapi_ticket'];//正常直接返回数据库存放的jsapi_ticket
            }

        }

     

        /**
         *重新获取jsapi_ticket
         */
        private function get_new_jsapi_ticket($tenant_id) {

            $result = file_get_contents('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' . $this->get_access_token($tenant_id) . '&type=jsapi');

    //get_access_token带着唯一标识获取token

            $result = json_decode($result,true);
            return $result['ticket'];
        }

     

        /**
         * 获取当前access_token同获取jsapi_ticket一样数据库表结构为

         */

        

        public function get_access_token($tenant_id) {
            $this->load->model('system_wechat_access_token_model','system_wechat_access_token');
            $res = $this->system_wechat_access_token->find(['tenant_id' => $tenant_id]);
            if (!$res || !is_array($res)) {
                $access_token = $this->get_new_access_token();
                // 插入access_token
                $this->system_wechat_access_token->create(['access_token' => $access_token,'time' => date('Y-m-d H:i:s'),'tenant_id' => $tenant_id]);
                return $access_token;
            } else if (time() - strtotime($res['time']) > 7150) {
                $access_token = $this->get_new_access_token();
                // 更新access_token
                $this->system_wechat_access_token->update(['access_token' => $access_token,'time' => date('Y-m-d H:i:s')],['id' => $res['id']]);
                return $access_token;
            } else {
                return $res['access_token'];
            }

        }

        /**
         * 重新从微信获取access_token
         */
        private function get_new_access_token() {
            $result = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $this->app_id . '&secret=' . $this->app_secret);
            $result = json_decode($result,true);
            return $result['access_token'];

        }

        /**
         * 数组转签名字符串
         */
        private function arrToTempStr($arr) {
            $str = '';
            foreach ($arr as $key => $value) {
                $str .= $key . '=' . $value . '&';
            }
            return substr($str,0,-1);
        }

    展开全文
  • 微信公众号网页分享功能开发

    万次阅读 2018-07-13 10:51:12
    现在每天都可以看到很多微信分享的链接上面有网站或者商家的自定义的分享标题,和分享链接的描述及分享出去的图像,例如下面的分享出去的链接: 上面这个是微信的js-SDK页面分享微信好友在聊天列表中显示的视觉...

    现在每天都可以看到很多微信分享的链接上面有网站或者商家的自定义的分享标题,和分享链接的描述及分享出去的图像,例如下面的分享出去的链接:

                     

         上面这个是微信的js-SDK页面分享给微信好友在聊天列表中显示的视觉效果。

          微信JS-SDK Demo :这个是微信网页分享出去的标题。

         微信JS-SDK,帮助第三方为用户提供更优质的移动web服务:这个是被分享的这个页面的分享描述。

         微信图标:这个就是自己网站或者自己自定义的图像。

         上面这个是微信官方网页分享出去的定义描述,那么怎样实现自己网站网页的自定义分享的标题,描述及分享出去的显示图片呢,下面就具体的来探讨一下微信网页第三方分享自定的实现方式。

         关于微信网页分享自定义主要有两方面的工作需要我们来做,一是:分享页面的js分享代码的编写,二是:微信分享网页的链接地址签名。

         首先来看一下网页的连接地址签名,这个功能主要是在服务端来时实现。

         第一步:基础数据的准备,需要如下数据信息:

         APPID:微信公众号的id; APP_SECRECT:公众号号的密钥。签名的网站域名(这个建议配置在配置文件中)。

         第二步:微信签名数据的准备:

        appid,secret,url将这三个参数放入map中, 键值为:appid=微信公众号的id,secret=APP_SECRECT,url=网站的域名+网页的请求地址+请求的参数。

        代码的实现方式如下:

          1. controller层的代码实现: 

    1. @RequestMapping("cover")
    2. public String identifyCover(HttpServletRequest request, HttpServletResponse response)
    3. //微信分享授权开始
    4. String appId = ;//取项目中配置的公众号id
    5. String secret = ;//取项目中配置的公众号密钥
    6. //例如我们有一个分享的链接为:http://test.weixinfwenx.cn/project/fenxiang.do?id=1&name=2;
    7. //那么domainAddr = http://test.weixinfwenx.cn,这个可以动态的配置在项目里,方便测试环境和生产
    8. //域名的切换
    9. String domainAddr = "";//项目中配置的网站的域名
    10. //这个取的是链接上的参数,例如在上面的这个链接中,id=1&name=2就是我们要动态去的参数,可能有人
    11. //会想到,这个两个参数直接写在地址中不是挺简单的为啥还要动态去获取这个参数呢;在这里我们引出了一
    12. //个微信二次分享的问题,就是别人转发的链接给你,然后你再转发给别人,在你转发给别人后这个链接的签
    13. //名就会失败,为啥呢,因为经过再次转发的链接,微信会自动加上一些自己的参数,这样会导致页面上微信
    14. //分享的链接和签名的链接不一致。直接导致自定义的标题和链接描述,显示失败,失败原因是微信默认的在
    15. //我们的分享链接上加上了&from=singlemessage。
    16. String str = request.getQueryString();
    17. Map<String, String> map = new HashMap<String, String>();
    18. map.put("appid", appId);
    19. map.put("secret", secret);
    20. String url = domainAddr + "/project/fenxiang.do?"+str; map.put("url", url);
    21. //这个地址是传给页面使用
    22. request.setAttribute("fenxurl", url);
    23. //开始微信分享链接签名
    24. Map<String, String> params = weixinService.weixinjsIntefaceSign(map);
    25. request.setAttribute("params", params);
    26. return "自己的页面";
     2.service层的实现代码:

       接口:  

    1. public interface weixinService{
    2. /**
    3. * @Title: weixinjsIntefaceSign
    4. * @Description: 微信js接口授权
    5. * @param map
    6. * @return
    7. * @return: Map<String,String>
    8. */
    9. public Map<String,String> weixinjsIntefaceSign(Map<String,String> map);
    接口实现类:

    1. public class weixinServiceImpl implements weixinService{
    2. public Map<String, String> weixinjsIntefaceSign(Map<String, String> map){
    3. //查看缓存数据是否存在
    4. String cacheAccess_token = jedis.get("access_token");
    5. String cacheTicket = jedis.get("ticket");
    6. //取出来为空的话则说明cacheAccess_token缓存过期,重新获取
    7. if(null == cacheAccess_token){
    8. ///start
    9. //获取cacheAccess_token
    10. //这段代码实际开发过程中要写成一个方法,我这里为了演示方便写在了一起。
    11. StringBuffer buffer = new StringBuffer();
    12. buffer.append("https://api.weixin.qq.com/cgi-bin/token?");
    13. buffer.append("appid="+map.get("appid"));
    14. buffer.append("&secret="+map.get("secret"));
    15. buffer.append("&grant_type=client_credential");
    16. String resultMsg = SendUtils.sendGet(buffer.toString(), "UTF-8");
    17. / end
    18. JSONObject json = new JSONObject(resultMsg);
    19. cacheAccess_token = json.getString("access_token");
    20. jedis.set("access_token",cacheAccess_token, "NX", "EX", 3600);//单位是秒
    21. }
    22. //取出来为空的话则说明cacheTicket缓存过期,重新获取
    23. if(null == cacheTicket){
    24. // start
    25. 获得jsapi_ticket
    26. StringBuffer buffer = new StringBuffer();
    27. buffer.append("https://api.weixin.qq.com/cgi-bin/ticket/getticket?");
    28. buffer.append("access_token="+access_token);
    29. buffer.append("&type=jsapi");
    30. String ticket = SendUtils.sendGet(buffer.toString(), "UTF-8");
    31. / end
    32. JSONObject json2 = new JSONObject(ticket);
    33. cacheTicket = json2.getString("ticket");
    34. jedis.set("ticket",cacheTicket, "NX", "EX", 3600);//单位是秒
    35. }
    36. //生成签名
    37. SortedMap<Object,Object> params = new TreeMap<Object,Object>();
    38. params.put("timestamp", Long.toString(new Date().getTime()/1000));
    39. params.put("noncestr", this.CreateNoncestr());
    40. params.put("jsapi_ticket",cacheTicket);
    41. params.put("url",map.get("url"));//url地址
    42. StringBuffer sb = new StringBuffer();
    43. Set es = params.entrySet();
    44. Iterator it = es.iterator();
    45. while(it.hasNext()) {
    46. Map.Entry entry = (Map.Entry)it.next();
    47. String k = (String)entry.getKey();
    48. Object v = entry.getValue();
    49. sb.append(k + "=" + v + "&");
    50. }
    51. String signStr = sb.toString().substring(0, sb.toString().length()-1);
    52. String sign = Sha1.getSha1Sign(signStr);//签名
    53. Map<String, String> result = new HashMap<String,String>();
    54. result.put("timestamp",(String)params.get("timestamp"));
    55. result.put("noncestr", (String)params.get("noncestr"));
    56. result.put("signature", sign);
    57. result.put("appId",map.get("appid"));
    58. return result;
    59. return null;
    60. }
    61. private String CreateNoncestr() {
    62. String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    63. String res = "";
    64. for (int i = 0; i < 16; i++) {
    65. Random rd = new Random();
    66. res += chars.charAt(rd.nextInt(chars.length() - 1));
    67. }
    68. return res;
    69. }
    70. }

    辅助工具类:

    1. /**
    2. *
    3. * 加密工具类
    4. *
    5. */
    6. public class Sha1 {
    7. public static String getSha1Sign(String decript) {
    8. try {
    9. MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
    10. try {
    11. digest.update(decript.getBytes("UTF-8"));
    12. } catch (UnsupportedEncodingException e) {
    13. // TODO Auto-generated catch block
    14. e.printStackTrace();
    15. }
    16. byte messageDigest[] = digest.digest();
    17. // Create Hex String
    18. StringBuffer hexString = new StringBuffer();
    19. // 字节数组转换为 十六进制 数
    20. for (int i = 0; i < messageDigest.length; i++) {
    21. String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
    22. if (shaHex.length() < 2) {
    23. hexString.append(0);
    24. }
    25. hexString.append(shaHex);
    26. }
    27. return hexString.toString();
    28. } catch (NoSuchAlgorithmException e) {
    29. e.printStackTrace();
    30. }
    31. return "";
    32. }
    33. }
    http请求工具类:

    1. /**
    2. * http请求工具类
    3. *
    4. */
    5. public class SendUtils {
    6. public static String sendGet(String url,String charset){
    7. //新建客户端
    8. HttpClient httpclient = new HttpClient();
    9. GetMethod getMethod = new GetMethod(url);
    10. httpclient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charset);
    11. httpclient.executeMethod(getMethod);
    12. String responseMsg = getMethod.getResponseBodyAsString();
    13. return responseMsg;
    14. }
    15. }
     以上是服务器端的微信签名的实现代码,下面介绍一下分享页面中js的编写。

      第一步引入微信的js文件:

       <script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

     第二步:  

    1. wx.config({
    2. debug: false,
    3. appId: '${params.appId}',
    4. timestamp: '${params.timestamp}',
    5. nonceStr: '${params.noncestr}',
    6. signature:'${params.signature}',
    7. jsApiList: [
    8. 'onMenuShareTimeline',
    9. 'onMenuShareAppMessage',
    10. 'onMenuShareQQ',
    11. 'onMenuShareWeibo',
    12. 'onMenuShareQZone'
    13. ]
    14. });
    15. wx.ready(function(){
    16. wx.checkJsApi({
    17. jsApiList: [
    18. 'onMenuShareTimeline',
    19. 'onMenuShareAppMessage',
    20. 'onMenuShareQQ',
    21. 'onMenuShareWeibo',
    22. 'onMenuShareQZone'
    23. ]
    24. });
    25. wx.checkJsApi({
    26. jsApiList: [
    27. 'onMenuShareTimeline',
    28. 'onMenuShareAppMessage',
    29. 'onMenuShareQQ',
    30. 'onMenuShareWeibo',
    31. 'onMenuShareQZone'
    32. ]
    33. });
    34. /*分享到朋友圈*/
    35. wx.onMenuShareTimeline({
    36. title: '计划书', // 分享标题
    37. desc: '保险让生活更美好!', // 分享描述
    38. link: '${fenxurl}', // 分享链接
    39. imgUrl: '${params.urlg}/PF_IDENTIFY/Cacheable/image/business/plan-cover/product_img.png', // 分享图标
    40. success: function () {
    41. // 用户确认分享后执行的回调函数
    42. },
    43. cancel: function () {
    44. // 用户取消分享后执行的回调函数
    45. }
    46. });
    47. /*分享给朋友*/
    48. wx.onMenuShareAppMessage({
    49. title: '计划书', // 分享标题
    50. desc: '保险让生活更美好!', // 分享描述
    51. link: '${fenxurl}', // 分享链接
    52. imgUrl: '${params.urlg}/PF_IDENTIFY/Cacheable/image/business/plan-cover/product_img.png', // 分享图标
    53. type: 'link', // 分享类型,music、video或link,不填默认为link
    54. dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
    55. success: function () {
    56. // 用户确认分享后执行的回调函数
    57. alert("您已分享");
    58. },
    59. cancel: function () {
    60. // 用户取消分享后执行的回调函数
    61. alert('您已取消分享');
    62. }
    63. });
    64. wx.onMenuShareQQ({
    65. title: '计划书', // 分享标题
    66. desc: '保险让生活更美好!', // 分享描述
    67. link: '${fenxurl}', // 分享链接
    68. imgUrl: '${params.urlg}/PF_IDENTIFY/Cacheable/image/business/plan-cover/product_img.png', // 分享图标
    69. success: function () {
    70. // 用户确认分享后执行的回调函数
    71. },
    72. cancel: function () {
    73. // 用户取消分享后执行的回调函数
    74. }
    75. });
    76. wx.onMenuShareWeibo({
    77. title: '计划书', // 分享标题
    78. desc: '保险让生活更美好!', // 分享描述
    79. link: '${fenxurl}', // 分享链接
    80. imgUrl: '${params.urlg}/PF_IDENTIFY/Cacheable/image/business/plan-cover/product_img.png', // 分享图标
    81. success: function () {
    82. // 用户确认分享后执行的回调函数
    83. },
    84. cancel: function () {
    85. // 用户取消分享后执行的回调函数
    86. }
    87. });
    88. wx.onMenuShareQZone({
    89. title: '计划书', // 分享标题
    90. desc: '保险让生活更美好!', // 分享描述
    91. link: '${fenxurl}', // 分享链接
    92. imgUrl: '${params.urlg}/PF_IDENTIFY/Cacheable/image/business/plan-cover/product_img.png', // 分享图标
    93. success: function () {
    94. // 用户确认分享后执行的回调函数
    95. },
    96. cancel: function () {
    97. // 用户取消分享后执行的回调函数
    98. }
    99. });
    100. });
    至此整个微信的整个分享开发完成,上面的这些js文件,都必须放在页面上。
    展开全文
  • 记录几个坑 1 前端js的分享url 来请求获取签名的时候 必须要写完成 比如 www.baidu.com/index.html 2 微信官方的sha1签名结果和本地的sha1结果不一样 是官网上面的错了 ...

    记录几个坑

    1 前端js的分享url 来请求获取签名的时候 必须要写完成 比如 www.baidu.com/index.html

    2 微信官方的sha1签名结果和本地的sha1结果不一样 是官网上面的错了

    展开全文
  • 微信公众号微信分享

    2019-08-30 15:56:14
    一、绑定微信公众号JS接口安全域名 二、为开发者设置web开发者权限(方便调试) 三、引入JS文件 http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)。 四、通过config接口注入权限验证配置 wx.config({...
  • 微信公众号分享

    2019-07-30 14:10:15
    1,微信公众号开发流程 搭环境,先要在公众号里面配置域名账号,前端主要是调取code getCode(appid) { let fromurl = location.href; this.code = this.getUrlParam("code"); // fromurl = '...
  • 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友
  • 微信公众号开发之分享接口实现

    万次阅读 2018-07-10 18:08:21
    微信公众号开发之分享接口实现第一步:先登录微信公众平台设置JS接口安全域名("域名不能包含http://")。如图:第二步:配置config接口权限验证首先需要通过access_token 采用http GET方式请求获得jsapi_...
  • 要想自定义分享的link、title、desc、imgUrl(分享卡片缩略图)就得集成JSSDK做自定义分享。准备阶段第一步要先配置安全域名:开发阶段可以将测试服和正式服的域名都配进去。没配置的话点击设置---公众号设置---功能...
  • 微信公众号分享朋友圈 h5实现js
  • [python]微信公众号分享功能开发

    千次阅读 2019-06-19 17:15:39
    微信公众号分享功能开发 必需参数 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名 jsApiList: [] // 必填,...
  • 微信公众号分享自定义无效,可能微信公众号ip白名单没有设置ip地址
  • 微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。 3. 公众平台 微信公众平...
  • 在前段时间做了一个微信公众号,因为我又是新手,没什么经验,拿起vue就开始,导致一坑再坑,简直阔怕!!!对于此次项目,我主要用到的是vue的整框架和必要的插件,但是我没用vuex,用vuex的话会方便很多很多 1.首先从认证获取...
  • 微信公众号文章分享PPT文件,借助小程序,可以很简单的实现。 总结: 第一步:将附件上传到“微附件”小程序,或官方网站,这里只演示上传到官网的。 第二步:在微信公众号后台操作就可以了。 详细操作: 1、...
  • 本来,如果公众号申请的东西都ok了之后,微信打开微信公众号之后是可以实现分享的,但是这个分享其实是微信默认的分享,它只分享网页上的title(title),第一张图片(imgUrl),网站域名(desc)和网址(link)。...
  • 作为系列文章的第五篇,本文重点探讨数据采集层中的微信分享追踪系统。微信分享,早已成为移动互联网运营的主要方向之一,以Web H5页面(下面称之为微信海报)为载体,利用微信庞大的好友关系进行传播,实现宣传、...
  • 假如你没有对你的微信公众号进行认证, 即使你登录了公众号后台, 也不能使用里面的功能, 包括给粉丝群发消息, 微信功能的开发扩展, 和后面更重要的推广宣传。 可以说微信公众号不认证, 相当于没有用。...
  • 最近有点忙,没有时间写知识点,今天来分享一个非常使用的知识点:在微信公众号文章中嵌入小程序。这个问题也很简单,但是对于第一次接触的人来说还是需要走点弯路才能解决的。在微信公众号文章中嵌入小程序的方法...
  • 本文介绍“如何在微信公众号的开放平台上运维微信公众号”,将介绍以下方面: (1)如何创建图文 (2)如何创建一个“网页模版” (3)自动回复 (4)自定义菜单 (5)其他 1 如何创建图文 图文在微信...
1 2 3 4 5 ... 20
收藏数 84,276
精华内容 33,710
关键字:

微信公众号分享