精华内容
下载资源
问答
  • 今天小编就为大家分享一篇django之静态文件 django 2.0 在网页显示图片的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 友盟分享网页显示缩略图

    千次阅读 2018-07-13 11:10:39
    友盟分享网页显示缩略图 当微信友盟分享缩略图不显示, 问题所在 微信无法加载http 图片, https可以加载, 但暂时又无法解决https 问题, 所以先对网络图片进行缓存 所以我们先要把url图片转换成UIImage类型的...

    友盟分享网页不显示缩略图

    当微信友盟分享缩略图不显示,
    问题所在 微信无法加载http 图片, https可以加载,
    但暂时又无法解决https 问题, 所以先对网络图片进行缓存
    所以我们先要把url图片转换成UIImage类型的缓存下来然后交给缩略图属性就可以。

    代码如下:

    NSURL *imgUrl = [NSURL URLWithString:img];
    UIImage *imagea = [UIImage imageWithData: [NSData dataWithContentsOfURL:imgUrl]];
    UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:content thumImage:imagea];
    展开全文
  • 微信分享网页 图标不显示

    万次阅读 2017-11-17 16:25:20
    微信分享网页分享出去自己可以看到图标,但是别人那里图标不显示。Android和IOS都出现这个问题。  图片大小确认不大于32k,代码设置确认没有问题,但就是不显示。 最后找到原因:标题含有敏感词汇,我们是有红包这...

    微信分享网页,分享出去自己可以看到图标,但是别人那里图标不显示。Android和IOS都出现这个问题。

      图片大小确认不大于32k,代码设置确认没有问题,但就是不显示。

    最后找到原因:标题含有敏感词汇,我们是有红包这个词,去掉以后显示正常。

    如图所示 本应该显示是一张红包图片就是下面标题改为123456时显示才是正常的:


    展开全文
  • 有时会不显示自定义的图片和描述。分步骤检查出现的问题: 调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法: 1.invalid url domain当前页面所在...

    在做h5页面分享时,用到了微信的自定义分享js-sdk  。

    有时会不显示自定义的图片和描述。分步骤检查出现的问题:

    调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法:

    1.invalid url domain当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,仅支持80(http)和443(https)两个端口,因此不需要填写端口号(一个appid可以绑定三个有效域名,见 ]目录1.1.1)。

    2.invalid signature签名错误。建议按如下顺序检查:

    1.确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。

    2.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。

    3.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。

    4.确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。

    5.确保一定缓存access_token和jsapi_ticket。

    6.确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

    3.the permission value is offline verifying这个错误是因为config没有正确执行,或者是调用的JSAPI没有传入config的jsApiList参数中。建议按如下顺序检查:

    1.确认config正确通过。

    2.如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。

    3.确认config的jsApiList参数包含了这个JSAPI。

    4.permission denied该公众号没有权限使用这个JSAPI,或者是调用的JSAPI没有传入config的jsApiList参数中(部分接口需要认证之后才能使用)。

    5.function not exist当前客户端版本不支持该接口,请升级到新版体验。

     

     

    检查了这些之后,发现有时分享可以显示自定义的图片和描述,有时不可以。

    1、在网上搜索说是1.4.0的版本的分享到朋友圈和发送给朋友的api(1.4.0新版本:updateTimelineShareData和updateAppMessageShareData)要用旧版本(旧版本:onMenuShareTimeline和onMenuShareAppMessage)的,但是我线上替换成旧版本的还是不行。但是看后台打印的日志是获取不到jsapi_ticket了,发现是后台的原因,只能后台人员去解决了。

    2、用的是前台发送url给后台接口,这个url需要encodeURIComponent,后台再decodeURIComponent,然后后台接口返回timestamp  、nonceStr和signature,代码如下:

    $(function () {
      var winUrl = window.location.href.split("#")[0];
      /* if(winUrl.indexOf('from=singlemessage')>0 || winUrl.indexOf('isappinstalled')>0){
        winUrl = winUrl.split('?from=singlemessage')[0]
      } */
      var meta = document.getElementsByTagName('meta');
      var share_desc = '';
      for (i in meta) {
        if (typeof meta[i].name != "undefined" && meta[i].name.toLowerCase() == "description") {
          share_desc = meta[i].content;
        }
      }
      $.ajax({
        type: "post",
        url: "/post/getShareSignature",
        crossDomain: true,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({
          "articleUrl": encodeURIComponent(winUrl)
        }),
        success: function (msg) {
          //console.log(" timestamp:" + msg.data.timestamp + " ; noncestr:" + msg.data.noncestr + ";  signature:" + msg.data.signature);
    
          wx.config({
            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: "wx91f855a7c7f4187b", // 必填,公众号的唯一标识
            timestamp: msg.data.timestamp, // 必填,生成签名的时间戳
            nonceStr: msg.data.noncestr, // 必填,生成签名的随机串
            signature: msg.data.signature, // 必填,签名,见附录1
            jsApiList: ['onMenuShareTimeline',
              'onMenuShareAppMessage'
            ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
          });
          wx.ready(function () {
            var title, img_url;
            if (winUrl.indexOf('post') != -1) {
              //IOS系统分享时读取图片路径会出现问题 用 encodeURI 来处理下
              title = $("#articleTitle").val();
              img_url = encodeURI($("#coverImg").val());
    
    
            } else if (winUrl.indexOf('school') != -1) {
              title = document.title;
              img_url = encodeURI($("#schoolBadge").attr("src"));
            } else if (winUrl.indexOf('seventy') != -1) {
              title = document.title;
              img_url = encodeURI('https://xsn.com.cn/fileDir/cnypaData/seventy.jpg');
            } else {
              title = document.title;
              img_url = encodeURI(location.href.split('.cn/')[0] + '.cn/img/Group.png')
            }
            //分享到朋友圈
            wx.onMenuShareTimeline({
              title: title, // 分享标题
              link: winUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: img_url, // 分享图标
    
              success: function () {
                console.log('已分享');
              },
              cancel: function () {
                console.log('已取消');
              },
              fail:function(res){
                alert(JSON.stringify(res))
              }
            }); //分享给微信好友
            wx.onMenuShareAppMessage({
              title: title, // 分享标题
              desc: share_desc,
              link: winUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: img_url, // 分享图标
              type: '', // 分享类型,music、video或link,不填默认为link
    
              success: function () {
                console.log('已分享');
              },
              cancel: function () {
                console.log('已取消');
              },
              fail:function(res){
                alert(JSON.stringify(res))
              }
            });
    
    
            wx.error(function (res) {
              console.log("res:", res)
            })
          });
    
    
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
          console.log("error" + errorThrown);
        }
      });
    
    
    
    
    
    })
    
    //  微信js - sdk分享 end

    3、另一个原因是后台只缓存了acess_token,没有缓存jsapi_ticket。这就又把问题抛到后台了(大笑,来回踢皮球,哈哈哈)。然后只能后台去找原因了。从后台打印出的日志来看,凡是分享不显示图片和描述的,都是jsapi_ticket没获取到为null,分析有可能是没有缓存jsapi_ticket导致的,微信这边做了限制,必须缓存jsapi_ticket和access_token。

    参考链接:

    https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115   附录5-常见错误及解决方法  这里微信有说明。官网帮你找问题。哈哈哈

    https://segmentfault.com/q/1010000002520634

    展开全文
  • 微信内分享网页自定义标题,图片,描述

    千次阅读 热门讨论 2019-06-22 15:23:17
    公司有个需求,将一个微网站链接,网页,外部网站在微信中打开,然后分享给其他人,但是在分享过程中发现分享完微信中显示的是这样子, 标题有了,但是简介显示网址,图片没有,而我想要的是上面另一种样式。...

    背景描述:

    公司有个需求,将一个微网站链接,网页,外部网站在微信中打开,然后分享给其他人,但是在分享过程中发现分享完微信中显示的是这样子,

          

    标题有了,但是简介显示网址,图片没有,而我想要的是上面另一种样式。标题,简介和图片都可自定义的。由此产生了这篇文章。

    必备要求:

    1. 有公众号,公众号必须认证过,如果不确定认证没认证过,就看下图,在微信公众平台https://mp.weixin.qq.com最下面接口权限中看分享接口后面状态是已获得还是未获得,已获得才可以用,未获得说明没有认证过,就不用往下看了。

    2.必须要有已备案的域名和服务器。实现这个功能需要调用后台接口,而且接口的域名和分享网站,网页的域名是一样的。

    这里要注意:在二次分享时候如果分享地址是http的话安卓手机正常,苹果手机不正常,如果是用https的话苹果手机也正常了。

    参考资料:

    1. 简书网页分享到微信https://www.jianshu.com/p/bf743d52c6d3
    2. 微信公众平台https://mp.weixin.qq.com
    3. 微信JS-SDK说明文档

    实现过程:

    上面准备工作做完以后开始实现。

    1. 首先可以先阅读以下微信的JS-SDK的说明文档
      微信JS-SDK说明文档
    2. 绑定域名,登录微信公众平台,进入“公众号设置”的功能设置里面填写js接口安全域名,这个是要填写的是你微信浏览器要打开的域名地址。不能添加IP地址。

      设置时候点击设置里面有说明,如下图

      画红圈的要注意,下载完的那个文件放进去一定要在浏览器能访问才能进行下一步。我是把这个文件放到tomcat下面的ROOT文件夹中,可以直接域名后面加文件名访问。

      网页访问的效果:
    3. 将你服务器的ip地址添加白名单。
      在开发-基本配置里面设置ip白名单,不然调用接口获取不到token.
    4. 在需要调用js接口的页面接入JS文件 http://res.wx.qq.com/open/js/jweixin-1.4.0.js  ,1.4.0是目前最新版本。网上有些地方用的是1.2.0.js,那个已经弃用了。
    5. 通过config接口注入权限并验证配置
      wx.config({
          debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: '', // 必填,公众号的唯一标识
          timestamp: , // 必填,生成签名的时间戳
          nonceStr: '', // 必填,生成签名的随机串
          signature: '',// 必填,签名
          jsApiList: [] // 必填,需要使用的JS接口列表
      });

       

    6. 这一步算是整个步骤中最关键的一步,必须正确的配置信息才可以进行调用JS-SDK。

    获取配置

     获取签名实际是需要四步

    1. 根据appId和appsecret获取access_token;

    2. 使用access_token获取jsapi_ticket;

    3. 使用时间戳,随机数,jsapi_ticket和要访问的url按照签名算法拼接字符串;

    4. 对第三步的字符串进行SHA1加密,得到签名;
    这步是在服务器后台写的一个工具类里面实现的,测试时候可以先后台获取,前台页面将参数写死,实际用的时候最好动态获取这些数据。如果参数写死的话会二次分享会出问题,在微信中第二次分享,微信会自己加一个参数上去,这样点开在分享的时候签名和url会匹配不上。

    第一步,获取access_token

    appId和appsecret可以在微信公众平台--开发-基本配置中查找

    /**
    	 * 第一步,获取access_token
    	 *	appId和appsecret可以在微信公众平台--开发-基本配置中查找
    	 */
    	public static String getAccess_token(String appId, String appSecret){
    
            String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
            String accessToken = null;
            try
            {
                URL urlGet = new URL(url);
                HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
                http.setRequestMethod("GET"); // 必须是get方式请求
                http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                http.setDoOutput(true);
                http.setDoInput(true);
                System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
                System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
                http.connect();
                InputStream is = http.getInputStream();
                int size = is.available();
                byte[] jsonBytes = new byte[size];
                is.read(jsonBytes);
                String message = new String(jsonBytes, "UTF-8");
                JSONObject jsonObj = JSONObject.fromObject(message);
                accessToken = jsonObj.getString("access_token");
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            return accessToken;
        }
    	

    第二步 获取jsapi_ticket

    /**
         * 第二步:获得ACCESS_TICKET
         * 
         * @Title: ACCESS_TICKET
         * @Description: 获得ACCESS_TICKET
         * @param @return 设定文件
         * @return String 返回类型
         * @throws
         */
        public static String getAccess_ticket(String access_token) {  
            String ticket = null;  
            String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ access_token +"&type=jsapi";//这个url链接和参数不能变  
            try {  
                URL urlGet = new URL(url);  
                HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();  
                http.setRequestMethod("GET"); // 必须是get方式请求  
                http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");  
                http.setDoOutput(true);  
                http.setDoInput(true);  
                System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒  
                System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒  
                http.connect();  
                InputStream is = http.getInputStream();  
                int size = is.available();  
                byte[] jsonBytes = new byte[size];  
                is.read(jsonBytes);  
                String message = new String(jsonBytes, "UTF-8");  
                JSONObject demoJson = JSONObject.fromObject(message);  
                System.out.println("JSON字符串:"+demoJson);  
                ticket = demoJson.getString("ticket");  
                is.close();  
            } catch (Exception e) {  
                    e.printStackTrace();  
            }  
            return ticket;  
        }  

    这里拿到对应的jsapi_ticket之后就可以进行参数排序和拼接字符串并加密

    第三步:SHA1加密

     /**
         * 第三步:SHA1加密
         */
        public static String SHA1(String decript) {  
            try {  
                MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");  
                digest.update(decript.getBytes());  
                byte messageDigest[] = digest.digest();  
                // Create Hex String  
                StringBuffer hexString = new StringBuffer();  
                // 字节数组转换为 十六进制 数  
                    for (int i = 0; i < messageDigest.length; i++) {  
                        String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);  
                        if (shaHex.length() < 2) {  
                            hexString.append(0);  
                        }  
                        hexString.append(shaHex);  
                    }  
                    return hexString.toString();  
           
                } catch (NoSuchAlgorithmException e) {  
                    e.printStackTrace();  
                }  
                return "";  
        }  

    加密算法转载自:http://www.open-open.com/lib/view/open1392185662160.html

    第四步: 获取签名

    /**
         * 第4步获取签名
         * 公众号
       	 * String appId="wx86b6597*****";
         * String appSecret="aeb428ffb9a8a071fc4******";
         */
        public static void main(String[] args) { 
        	String appId="wx118d752d*****";  //这里写自己的appId
        	String appSecret="947cce9d2808bca0976788d4*****";
            //1、获取AccessToken  
            String accessToken = getAccess_token(appId, appSecret);  
              
            //2、获取Ticket  
            String jsapi_ticket = getAccess_ticket(accessToken);  
              
            //3、时间戳和随机字符串  
            String noncestr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);//随机字符串  
            String timestamp = String.valueOf(System.currentTimeMillis() / 1000);//时间戳  
              
            System.out.println("accessToken:"+accessToken+"\njsapi_ticket:"+jsapi_ticket+"\n时间戳:"+timestamp+"\n随机字符串:"+noncestr);  
              
            //4、获取url  
            String url="http://api.groupusonline.com/txrtWeb/test.html";  
            /*根据JSSDK上面的规则进行计算,这里比较简单,我就手动写啦 
            String[] ArrTmp = {"jsapi_ticket","timestamp","nonce","url"}; 
            Arrays.sort(ArrTmp); 
            StringBuffer sf = new StringBuffer(); 
            for(int i=0;i<ArrTmp.length;i++){ 
                sf.append(ArrTmp[i]); 
            } 
            */  
              
            //5、将参数排序并拼接字符串  
            String str = "jsapi_ticket="+jsapi_ticket+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+url;  
             
            //6、将字符串进行sha1加密  
            String signature =SHA1(str);  
            System.out.println("参数:"+str+"\n签名:"+signature);  
        } 

    上面是工具类里面的内容,接下来在控制类里面写调用接口。上面的这些内容就可以算出来签名和一些配置需要的东西,测试时候可以直接算出来在html页面里面将参数写死。

    第五步:调用接口

    /**
     * 微信分享相关
     * Created by yf on 2019/6/20.
     */
    @Controller
    @ResponseBody
    @RequestMapping("wx")
    public class WeChatHander {
    
        private Logger log = LoggerFactory.getLogger(WeChatHander.class);
        //公众号信息
        private static final String appId = "wx118d****12221";
        private static final String appSecret="947cce9***88d4b898db3e";
        //微信自动义分享
        @RequestMapping("share")
        public Object share(HttpSession session,String URL){
            String url="";
            //需要转换解码url
            try {
                url = java.net.URLDecoder.decode(URL,"UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            //获取access_token,这里要从存到session,生成这个参数的wx调用接口有调用次数限制。这部分存session,下面的下载文件里面没有更新,自己添加进去吧,不然接口次数很快就用完了。
            String aeecss_token=(String) session.getAttribute("aeecss_token");
            if(aeecss_token==null){
            	aeecss_token = WeChatUtil.getAccess_token(appId, appSecret);
            	session.setAttribute("aeecss_token", aeecss_token);
            }
            //获取access_ticket
            String aeecss_ticket=(String) session.getAttribute("aeecss_ticket");
            if(aeecss_ticket==null){
            	aeecss_ticket = WeChatUtil.getAccess_ticket(aeecss_token);
            	session.setAttribute("aeecss_ticket", aeecss_ticket);
            }
            //String aeecss_ticket = WeChatUtil.getAccess_ticket(aeecss_token);
             //3、时间戳和随机字符串  
            String nonceStr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);//随机字符串  
            String timestamp = String.valueOf(System.currentTimeMillis() / 1000);//时间戳  
            System.out.println("accessToken:"+aeecss_token+"\njsapi_ticket:"+aeecss_ticket+"\n时间戳:"+timestamp+"\n随机字符串:"+nonceStr);  
            //4、获取url  
            //5、将参数排序并拼接字符串  
            String str = "jsapi_ticket="+aeecss_ticket+"&noncestr="+nonceStr+"&timestamp="+timestamp+"&url="+url;   
            //6、将字符串进行sha1加密  
            String signature =WeChatUtil.SHA1(str);  
            System.out.println("参数:"+str+"\n签名:"+signature);  
            
            
            Map<String,String> map=new HashMap();
            map.put("appId",appId);
            map.put("timestamp",timestamp);
            map.put("accessToken",aeecss_token);
            map.put("ticket",aeecss_ticket);
            map.put("nonceStr",nonceStr);
            map.put("signature",signature);
        	return map;
        }
    }

    这样通过这个接口获取签名后把所有的信息都返回json格式了。概要的都有了,这是就可以配置config了,此时html页面中应该是:这是参数写死的时候测试用。

    
    
    <script type="text/javascript">
    
        wx.config({
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: 'wx118d75***212221', // 必填,公众号的唯一标识
        timestamp:'1560929330' , // 必填,生成签名的时间戳
        nonceStr: 'ab1ef978a35f4d4f', // 必填,生成签名的随机串
        signature: '13159896a4f8f461e0f****9df4029818e6e',// 必填,签名
        jsApiList: [// 必填,需要使用的JS接口列表
            'updateAppMessageShareData',
            'updateTimelineShareData'
         
    		], // 需要检测的JS接口列表,所有JS接口列表见附录2,
    	});
        //ready
        wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
        	shareData = {
        	        title: "测试标题",  // 分享标题
        	        desc: "测试描述",            // 分享描述
        	        link: "http://****.com/txrtWeb/test.html",                // 分享链接
        	        imgUrl: "http://****.com/images/logo.png",  // 分享图标
        	        success: function() {
        	          // 设置成功
        	        }
        	    };
        	    // 1.4.0 新接口 (只调用这个接口在安卓下是无效的)
        		wx.updateAppMessageShareData(shareData);
        	    wx.updateTimelineShareData(shareData);
    	});            
    </script>

    参数从接口获取的时候如下:

    <!--  Meta for OpenGraph -->
      <meta name="title" content="测试页面标题从meta获取">
      <meta name="description" content="描述">
      <!-- End -->
      <script src="include/jquery-1.7.1.min.js" language="JavaScript"></script>
      <script src="http://res2.wx.qq.com/open/js/jweixin-1.4.0.js"language="JavaScript"></script>    <!-- 微信js -->
    
    <!--微信分享相关js -->
    	<script type="text/javascript">
    		var title=document.querySelector('meta[name="title"]').getAttribute('content');   //网页标题
    		var desc=document.querySelector('meta[name="description"]').getAttribute('content');   //网页描述
    			 $.ajax({
    	             async : true,   //这里参数true和false在微信中打开会有不同效果,实际用的时候用false,用true时候测试会有提示性内容。
    				 url : 'http://****.com/**/wx/share',
    				 //url : 'http://localhost:8081/txrt_api/wx/share',
    	             type : "POST",
    	             dataType : "json", // 返回的数据类型,设置为JSONP方式	   
    	             data : {
    	                 URL : encodeURIComponent(window.location.href.split("#")[0])   
    	             }, 
    	             success: function(response, status, xhr){
    	                 //console.log('状态为:' + status + ',状态是:' + xhr.statusText);
    	               // alert("进来了");
    					wx.config({
    						debug: false, //调试阶段建议开启,关闭就不弹提示了
    						appId: response.appId,//APPID
    						timestamp: response.timestamp,//上面main方法中拿到的时间戳timestamp
    						nonceStr: response.nonceStr,//上面main方法中拿到的随机数nonceStr
    						signature: response.signature,//上面main方法中拿到的签名signature
    						//需要调用的方法接口
    						jsApiList: [         
                           'updateAppMessageShareData','updateTimelineShareData']
    							});
    					//ready
    						wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
    							shareData = {
    									title: title,  // 分享标题
    									desc: desc,            // 分享描述
    									link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    									imgUrl: "http://****.com/txrtWeb/images/zfshlogo.png",  // 分享图标
    									success: function() {
    										//alert("设置成功分享");
    									  // 设置成功
    									}
    								};
    								// 1.4.0 新接口 (只调用这个接口在安卓下是无效的)
    								wx.updateAppMessageShareData(shareData);
    								wx.updateTimelineShareData(shareData);
    						});
    	             }
    	         });
        
    	</script>

    注意

    1. url一定要是完整的url(当前网页的URL,不包含#及其后面部分)最好是使用window.location.href.split("#")获取得到,如果传入固定的好像会报invalid signature错误,所以为了安全起见还是直接传入当前的url
    2. 这个签名的有效时间为7200秒,也就是2个小时,因此当超过两个小时候,再访问也会报invalid signature错误。但是这个我还没有遇见,并不知道这么解决,其他说是需要缓存access_token和access_ticket
    3. 另外还有一个错误:invalid url domain
      这个跟生成签名时用的url有关系,官网的说法是:
      invalid url domain当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,如果使用了端口号,则配置的绑定域名也要加上端口号(一个appid可以绑定三个有效域名)
      这个url必须是:“公众号设置---功能设置----JS接口安全域名”中绑定的三个域名之一
    4. 如果以上配置都是正确,而且debug也设置为true了,在微信中访问连接会出现config:ok的界面,就说明配置成功了
    5. 有时也可以把ajax请求放在setTimeout中进行请求。

    验证工具:
    微信公众平台接口调试工具
    微信 JS 接口签名校验工具

    参考:
    解决微信JS-SDK扫一扫功能接入以及出现签名无效 invalid signature
    微信JS-SDK获取signature签名以及config配置

    相关代码文件下载:https://download.csdn.net/download/qq_37698433/11253616

     


     

     

    展开全文
  • 网页图片显示分辨率与实际分辨率不一样
  • 提高网页浏览量是提高网站信息影响的前提,提高网页浏览量的方式是多种多样的,其中向特定页面添加网页分享是一个很好的主意,网页分享实现方式很多,这里介绍一下百度分享的应用:
  • 网页 失效图片 显示 默认 缺省 图片

    千次阅读 2013-06-25 19:24:51
    新闻 网页 贴吧 知道 音乐 图片 视频 地图 文库 更多» 输入法 手写拼音关闭 推荐 : 用手机随时随地上百度 <!-- .ec_bdtg .fsblock {padding:0; word-break:...
  • 微信分享 安卓不显示图片

    千次阅读 2018-07-12 14:31:55
    微信分享在IOS手机上分享小图标是显示的,安卓手机部分图标不显示,最终是把.png格式改成.jpg格式图标就OK
  • 微信分享图片URL不显示问题

    千次阅读 2020-06-02 10:36:24
    很有可能是图片太大,或者有敏感词。 关于图片太大的话,可以让UI切个小的图片。 或者自己用代码压缩。 先记录一下: 首先用Glide下载下来图片。 1、把Drawable转换成Bitmap。 public static Bitmap drawableTo...
  • 出现这种情况的原因貌似是微信分享会屏蔽分享出去标题和描述的某些字符,就会导致分享人看到的分享内容没有问题,但被分享人看到的分享内容中图片或描述会为按照设置显示,修改一下分享的标题或描述就好。...
  • 微信分享网页链接缩略图不显示解决方法
  • 本文实例讲述了Android TextView显示Html类解析的网页图片及自定义标签。分享给大家供大家参考,具体如下: Android系统显示HTML网页的最佳控件为WebView,有时候为了满足特定需求,需要在TextView中显示HTML网页...
  • 最近有一个需要引导用户保存图片分享朋友圈的需求,后面发现使用html2canvas可以进行网页截图。 现在聊一聊关于所截的内容中,图片不能正常显示的问题,找了资料说是图片跨域的问题,就是说只有与项目同一个域名下...
  • 微信分享网页链接不显示缩略图怎么办 1.认证的公众号 2.备案的域名 有了公众号和域名才能去调用微信接口,也可以使用第三方工具来进行修改,这样即使没有备案的域名和认证的公众号,也可以添加或者修改缩略图和描述...
  • 朋友圈分享网址不显示图片问题

    千次阅读 2015-06-15 09:13:46
    公司会有很多活动,做成网页介绍形式推广传播出去,微信分享中只有链接没有图片显示不太好看 在之后增加width="0" height="0"/> 就有图片显示效果了,图片之后的信息描述呢 ,就是你网页的title的内容 红色...
  • 最初,我以为这个东西很复杂,还微信开发者哪里找了文档来看。准备使用微信JS-SDK里面的方法….....微信好友和朋友圈都差不多,以分享到微信好友的为例<!DOCTYPE html> 这灯谜我猜到了开头,猜不到结尾。 <di
  • 微信分享网页链接不显示缩略图怎么办 1.认证的公众号 2.备案的域名 有了公众号和域名才能去调用微信接口,也可以使用第三方工具来进行修改,这样即使没有备案的域名和认证的公众号,也可以添加或者修改缩略图和描述...
  • 理科题相比于文科题,难点在于公式的录入,特别是初高中的题目,涉及到大量的图片、公式等,为了在网页显示一个根号三,需要一个根号的图片加上一个横线的代码加上一个数字,如果要录入一个数学集合的公式,复杂度...
  • html微信浏览器分享显示图片的问题

    千次阅读 2017-04-24 18:44:10
    你可以看到显示网页地址和html里document的title和html里的第一张图片(当有多个的时候获取第一个,当图片是gif格式的时候iphone4s不能显示缩略图,iphone5s可以,魅族(安卓)也可以)。     -------...
  • 在tp5框架下对接微信分享朋友圈接口,并显示图片和标题。要使用 微信JS-SDK 进行调用;准备步骤:1,先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。2,获取公众号对应的 appid 和 ...
  • Web网页自定义分享的标题、内容和图片注:自定义微信分享的话需要调用微信的sdk,如果需要可以查看我的文章。1.引入js <script src="https://hm.baidu.com/hm.jsd69321757dcfbfbe09dbddd4dca87b28"></script>2.配置...
  • 搞很久1、FACEBOOK分享的时候会有24小时的缓存,所以你改了图片,就踏马很久都不会有改变这时候你就要去踏马的FACEBOOK的这个调试的地方去删缓存https://developers.facebook.com/tools/debug/2、网页链接在QQ聊天...
  • 网页使用外链图片403无法显示问题

    千次阅读 2019-07-03 11:17:42
    为了节省服务器存储空间和提升服务器网络性能,我们往往把比较大的资源放在其他服务器,例如我们博客中使用的图片以及文件等,但是这样会造成一个问题,就是外链资源403无法正常加载,在此记录下解决过程。...
  • 微信在分享第三方网站是不显示缩略图和描述的,如下图所示 要解决这个问题必须调用微信JS-SDK接口,下面讲一下如何调用接口 第一部分 准备步骤 注册微信公众号。 通过左侧导航“开发”--“基本配置”进入。...
  • 这个图的在浏览器直接访问没问题,在网页解析就403 2、是防盗链的原因引起 3、在图片存放的服务器地址中,宝微博加入白名单、允许第三方网站访问资源图片   4、weibo.com加入白名单 5、最后图片出来了 .....
  • 如图,图1是其它游戏分享链接的显示效果(前提是在微信中打开并分享出去),图2是我们游戏页面(同样在微信中打开并分享出去)分享链接的显示效果。 要达到图1的自定义文案与图标的效果,经研究与各种尝试,得到的...
  • H5图片显示技术分享

    千次阅读 2018-06-08 15:22:06
    想要在网站上放上一张图片可不是用代码能实现的必须由外界引入,代码模块则是输入一段URL地址栏来加载图片。话说加载一张图片常见的方式有两种,一是使用插入实体图片img标签 ,二是使用背景图的方式来实...
  • img中的src地址是正确的,但图片显示 将 src 中的 地址放在控制台中显示,发现前面有个红点,这个红点是 \ufeff 解决办法:用正则去除此红点就行了 //imgsrc是要处理的地址 var src = imgsrc.replace(/^[\s\...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,376
精华内容 16,550
关键字:

网页分享显示图片