手机网站的网页进行微信转发时遇到的问题

以前公司往外推送微信信息的时候,都是在后台添加的文本,大家转发起来没有任何问题。最近手机网站上上了几个新活动,用微信转发的时候,问题来了,左下角的小图片没有,应该是文字简介的地方是一条url,实在不雅观。用一些笨笨的方法也能够弥补一下这个问题,比如,把<title>标签中的内容丰满一下,在脚本的开头可以隐藏一张图片,确实标题和图片能够出来,但这终究不是正道,今天就研究了一下微信的这个东东,在网上搜索了一下,还真是找到一个非常棒的类库,用起来效果也很不错。

<?php
class WeixinAction extends Action {
    /**
     * php curl 请求链接
     * 当$post_data为空时使用GET方式发送
     * @param unknown $url
     * @param string $post_data
     * @return mixed
     */
    function curlSend($url,$post_data=""){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        if($post_data != ""){
            curl_setopt($ch,CURLOPT_POST,1);
            curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
        }
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }
    /**
     * 调用接口获取 $ACCESS_TOKEN
     * 微信缓存 7200 秒,这里使用thinkphp的缓存方法
     * @param unknown $APP_ID
     * @param unknown $APP_SECRET
     * @return Ambigous <mixed, Thinkmixed, object>
     */
    function get_accesstoken($APP_ID,$APP_SECRET){
        $ACCESS_TOKEN = S($APP_ID);
        if($ACCESS_TOKEN == false){
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APP_ID."&secret=".$APP_SECRET;
            $json = $this->curlSend($url);
            $data=json_decode($json,true);
            S($APP_ID,$data[access_token],7000);
            $ACCESS_TOKEN = S($APP_ID);
        }
        return $ACCESS_TOKEN;
    }
    /**
     * 微信网页JSSDK?调用接口获取 $jsapi_ticket
     * 微信缓存 7200 秒,这里使用thinkphp的缓存方法
     * @param unknown $ACCESS_TOKEN
     * @return Ambigous <mixed, Thinkmixed, object>
     */
    function get_jsapi_ticket($ACCESS_TOKEN){
        $jsapi_ticket = S($ACCESS_TOKEN);
        if($jsapi_ticket == false){
            $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$ACCESS_TOKEN."&type=jsapi";
            $json = $this->curlSend($url);
            $data = json_decode($json,true);
            S($ACCESS_TOKEN,$data[ticket],7000);
            $jsapi_ticket = S($ACCESS_TOKEN);
        }
        return $jsapi_ticket;
    }
    /**
     * 微信网页JSSDK 获取签名字符串
     * 所有参数名均为小写字符
     * @param unknown $nonceStr 随机字符串
     * @param unknown $timestamp 时间戳
     * @param unknown $jsapi_ticket
     * @param unknown $url 调用JS接口页面的完整URL,不包含#及其后面部分
     */
    function get_js_sdk($APP_ID,$APP_SECRET){
//        echo $APP_ID.‘/‘.$APP_SECRET;
        $protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off || $_SERVER[SERVER_PORT] == 443) ? "https://" : "http://";
        $url = $protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
        $argu = array();
        $argu[appId] = $APP_ID;
        $argu[url] = $url;
        $argu[nonceStr] = $this->createNonceStr();
        $argu[timestamp] = time();
        $ACCESS_TOKEN = $this->get_accesstoken($APP_ID, $APP_SECRET);
        $argu[jsapi_ticket] = $this->get_jsapi_ticket($ACCESS_TOKEN);
        $string = "jsapi_ticket=".$argu[jsapi_ticket]."&noncestr=".$argu[nonceStr]."&timestamp=".$argu[timestamp]."&url=".$argu[url];
        $argu[signature] = sha1(trim($string));
        return $argu;
    }
    /**
     * 获取随机字符串
     * @param number $length
     * @return string
     */
    function createNonceStr($length = 16) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return $str;
    }
}
?>

使用的时候用R函数带着两个参数,请求get_jsapi_ticket()方法,两个参数分别是$APP_ID,$APP_SECRET,这两个参数在自己的微信公共平台上可以看到。返回值可以将config中的选项填充起来。

 wx.config({
                debug: false, // 开启调试模式
                appId: ‘{$res.appId}‘, // 必填,公众号的唯一标识
                timestamp: {$res.timestamp}, // 必填,生成签名的时间戳
                nonceStr: ‘{$res.nonceStr}‘, // 必填,生成签名的随机串的
                signature: ‘{$res.signature}‘,// 必填,签名,见附录1
                jsApiList: {$res.jsApiList} // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        });

jsApiList可以根据自己的需要添加。然后就简单多了,打开微信开发文档吧。

wx.ready(function(){
            wx.onMenuShareAppMessage({
                title: ‘{$res.title}‘,
                desc: ‘{$res.desc}‘,
                link: ‘{$res.link}‘,
                imgUrl: ‘{$res.imgUrl}‘,
                success: function (res) {
                    alert(‘感谢您的分享‘);
                }
            });
            wx.onMenuShareTimeline({
                title: ‘{$res.title}‘, // 分享标题
                link: ‘{$res.link}‘, // 分享链接
                imgUrl: ‘{$res.imgUrl}‘, // 分享图标
                success: function () {
                    // 用户确认分享后执行的回调函数
                    alert(‘感谢您的分享‘);
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });
        });

这样无论分享给朋友还是分享到朋友圈,就漂亮多了。

时间: 2024-08-10 00:06:56

手机网站的网页进行微信转发时遇到的问题的相关文章

微信跳转技术可以从手机网站直接跳转微信关注页面

方法一 自己的微信资料里有个二维码,别人扫描后可以查看资料添加,把二维码扫描后,得到的地址是:http://weixin.qq.com/r/ykzexmzEPzFArSil9xnY目前已失效方法二 weixin://profile/gh_34bd692a9835行不通此种类型的链接,此链接在微信内会链接到一个公共帐号的介绍界面.但是目前也只能到达微信界面.方法三 weixin://qr/gh_34bd692a9835此种类型的链接在手机的外部浏览器也会被自动识别并跳转到微信,但会进行条码扫描.但

什么叫响应式手机网站设计

1.什么叫响应式网页设计响应式Web设计(Responsive Web design)的理念是:页面的设计与开发应当根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相应的响应和调整. 具体的实践方式由多方面组成,包括弹性网格和布局.图片.CSS media query的使用等. 无论用户正在使用笔记本还是iPad,我们的页面都应该能够自动切换分辨率.图片尺寸及相关脚本功能等,以适应不同设备: 换句话说,页面应该有能力去自动响应用户的设备环境. 响应式网页设计就是一个网站能够兼容多个

微信商城、手机网站和APP三者到底到底,有什么区别?

微信商城.手机网站和APP三者到底到底,有什么区别? 现在主流系统由iPhone和Android组成,其他还有Symbian.Research in Motion.Windows Mobile等,后三种占有率非常少了,如果不是有特殊开发需求可以忽略了. 1.精准性多数App都会提供分享到微博.人人等社交网站的功能,聚集具有相似兴趣的目标群体.同时,App还可以通过收集手机系统的信息.位置信息.行为信息等,来识别用户的兴趣.习惯.例如,识别手机的型号.系统,辨别是商务机还是音乐机,就能估计用户的收

分享:我用一天时间开发的 新年送祝福 微信手机网站(可在线体验附图)(要代码的留下邮箱)

分享:我用一天时间开发的 新年送祝福 微信手机网站(要代码的留下邮箱) (可在线体验附图)(要代码的留下邮箱) 大家有好的建议或想法欢迎随时与我联络,并将附赠全部代码一份. 微信或手机浏览器中的运行效果如下: 首页 摇一摇之后 编辑祝福语 祝福送给朋友 祝福送给微信朋友后的效果: 手机或微信体验地址: http://fenxiang.yunxunmi.com/ 微信二维码:  大家有好的建议或想法欢迎随时与我联络,并将附赠全部代码一份.

黄聪:如何用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式

最近用360浏览器访问自己的网站,发现都是被优先选用兼容模式打开,这使得网站很难看.为了让360浏览器打开网站的时候优先试用极速模式,找了一下官方论坛,发现了解决方案. 在head标签中添加一行代码: <html> <head> <meta name="renderer" content="webkit|ie-comp|ie-stand"> </head> <body> </body> <

友点企业网站管理系统集电脑网站、手机网站、微信三站合一

友点企业网站管理系统集电脑网站.手机网站.微信三站合一,只要录入一次数据,三站数据自动同步,降低人力维护工作量:只要一个虚拟主机,有效节约空间投资.系统采用PHP进行开发,它具有操作简单.功能强大.稳定性好.易扩展.安全性强.后期维护方便等特点,可以帮您迅速.轻松地构建起一个强大专业的企业网站.系统支持多语言.自定义模型.SEO优化.静态页生成.评论留言.订购.会员.广告.招聘.统计.自助表单等常见企业网站基本功能.运行环境:PHP5.2 + MYSQL5.0以上 + Zend Optimize

webApp手机网站开发、最新H5+CSS3开发微信端网站

手机网站移动端webApp开发实践来啦,助您更快.更好的学习HTML5+css3手机网站开发知识!!! 移动端web网站(移动端web开发/APP开发).移动端App模版.手机网站模版.HTML5+CSS3网站模版,手机端网站开发模板.手机网站.移动webApp开发.移动端网站.HTML5+CSS3.手机web开发...... WebApp与Native App有何区别呢? Native App:1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C.2.更新体验较差.

如何设计手机网站

由于智能手机的大量使用,使得浏览者通过手机几乎要办一切事情了,当然包括浏览手机网站.这导致企业甚至是个人掀起了一股手机网站建设的热潮,企业通过手机网站与微信公众号关联,实现企业的宣传和在线业务,个人则建手机网站玩一玩.炫一炫,显示一下自己的弄潮能力!那么,作为手机网站建设的第一个环节-手机网站设计,怎么做才能让用户愿意浏览,并且提高用户体验呢?这个问题非常重要,在网站.APP如海的互联网上,要想让您的手机网站能够独树一帜.给用户留下深刻印象,就必须在设计手机网站上下功夫,否则是很难实现的. 1.

HTML5移动端手机网站开发流程

最近一直在研究移动手机网站的开发,发现做手机网站没有想象中的那么难.为什么会这么说呢?我们试想下:我们连传统的PC网站都会做,难道连一个小小的手机网站难道都搞不定吗?其实手机网站就是一个微缩版的PC网站罢了!至于为什么觉得难.觉得无从下手. 段亮觉得有以下几点: 一.没有完整的思路和流程 就像做网站的流程一样,如果你能知道它的流程,我相信就不会觉得做手机网站难!真正难的是你没有思路. 二.把html5这门技术想的高深莫测 好像觉得学会用html5+css3做手机网站,就相当于学会了顶尖的绝世武功