微信JSSDK

首先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。要记得哦。

先看后端操作,基于thinkphp5,

/*
        微信JS-SDK配置
*/
    public function share(){
        $ticket = getJsapiTicket(getAccessToken(APPID,SECRET));//获取token_assecc并通过token_access获取ticket
        $noncestr = 'Wm3WZYTPz0sddenW';//随机字符串,可自定义随机生成16位字符串方法
        $time = time();//时间戳,要和加载到模板的保持一致
        $url = 'http://www.XXXXX.com/index/index/share';//分享的链接,用于生成签名,微信官方会检查你调用js-api的接口和这个是否一致
        $getSignatrue = 'jsapi_ticket='.$ticket.'&noncestr='.$noncestr.'&timestamp='.$time.'&url='.$url;//拼接这些信息,用于生成签名
        $signature = sha1($getSignatrue);//通过sha1()方法生成签名,此方法为微信内置方法
        return $this->fetch('share',['time'=>$time,'noncestr'=>$noncestr,'signature'=>$signature,'appid'=>APPID]);
    }

这里的APPID和SECRET是在入口文件定义的常量,如下

// 微信AppID和AppSecret
define('APPID', 'wx8fc5311118f2dfb3');
define('SECRET', '97f96488de1111194dfc86f0e287a969');

getAccessToken()方法是我封装的一个方法,放在thinkphp5的公共方法文件里就可以,可以参考微信开发动态获取access_token,反正微信开发离不开获取token_access.

接下来是前端模板

<!DOCTYPE html>
<html>
<head>
    <title>
        标题
    </title>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    <!-- 必须:引用微信js_sdk -->
</head>
<body>
<a href="javascript:void(0);" onclick="getLocation()"><h1>获取地理位置接口</h1></a><br />
<a href="javascript:void(0);" onclick="openLocation()"><h1>使用微信内置地图查看位置接口</h1></a><br />
<a href="javascript:void(0);" onclick="onMenuShareTimeline()"><h1>分享到朋友圈</h1></a><br />
<a href="javascript:void(0);" onclick="onMenuShareAppMessage()"><h1>分享给朋友</h1></a><br />
<a href="javascript:void(0);" onclick="chooseImage()"><h1>拍照或从手机相册中选图接口</h1></a><br />
<a href="javascript:void(0);" onclick="getNetworkType()"><h1>获取网络状态接口</h1></a><br />
<a href="javascript:void(0);" onclick="scanQRCode()"><h1>调起微信扫一扫接口</h1></a><br />
<a href="javascript:void(0);" onclick="closeWindow()"><h1>关闭当前网页窗口接口</h1></a>
</body>
<script>
    wx.config({
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: '{$appid}', // 必填,公众号的唯一标识
        timestamp: '{$time}', // 必填,生成签名的时间戳
        nonceStr: '{$noncestr}', // 必填,生成签名的随机串
        signature: '{$signature}',// 必填,签名
        jsApiList: [
            'onMenuShareTimeline',    //分享到朋友圈
            'onMenuShareAppMessage',  //分享给朋友
            'scanQRCode',             //调起微信扫一扫接口
            'getLocation',            //获取地理位置接口
            'chooseImage',            //拍照或从手机相册中选图接口
            'getNetworkType',         //获取网络状态接口
            'openLocation',           //使用微信内置地图查看位置接口
            'closeWindow',            //关闭当前网页窗口接口
        ] // 必填,需要使用的JS接口列表
    });
    wx.ready(function(){
        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

        //判断当前客户端版本是否支持指定JS接口
        // wx.checkJsApi({
        //     jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
        //     success: function(res) {
        //     // 以键值对的形式返回,可用的api值true,不可用为false
        //     // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
        //      alert('该api可用');
        //     }
        // });


        wx.onMenuShareAppMessage({
            title: 'this is title', // 分享标题
            desc: 'this is desc', // 分享描述
            link: 'http://music.163.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: 'http://pic.616pic.com/ys_b_img/00/66/73/9KnqqgZBFe.jpg', // 分享图标
            type: 'link', // 分享类型,music、video或link,不填默认为link
            dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
            success: function () {
            // 用户点击了分享后执行的回调函数
                alert('分享好友成功');
            },
            cancel: function (res) {
                alert('分享好友已取消');
            },
            fail: function (res) {
                alert(JSON.stringify(res));
            }
        });

        wx.onMenuShareTimeline({
            title: 'this is title', // 分享标题
            link: 'http://music.163.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: 'http://pic.616pic.com/ys_b_img/00/66/73/9KnqqgZBFe.jpg', // 分享图标
            success: function () {
                // 用户点击了分享后执行的回调函数
                alert('分享朋友圈成功');
            }
        });

    });

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

    //分享到朋友圈
    function onMenuShareTimeline(){
        wx.onMenuShareTimeline({
            title: 'this is title', // 分享标题
            link: 'http://music.163.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: 'http://pic.616pic.com/ys_b_img/00/66/73/9KnqqgZBFe.jpg', // 分享图标
            success: function () {
                // 用户点击了分享后执行的回调函数
                alert('分享朋友圈成功');
            }
        });
        alert('onMenuShareTimeline');
    }


    //获取地理位置接口
    function getLocation(){
        wx.getLocation({
            type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
            success: function (res) {
                var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
                var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
                var speed = res.speed; // 速度,以米/每秒计
                var accuracy = res.accuracy; // 位置精度
                alert(latitude);
            }
        });
    }

    //调起微信扫一扫接口
    function scanQRCode(){
        wx.scanQRCode({
            needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
            scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
            success: function (res) {
                // var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
            }
        });
    }

    //拍照或从手机相册中选图接口
    function chooseImage(){
        wx.chooseImage({
            count: 1, // 默认9
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            success: function (res) {
                var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                alert(localIds);
            }
        });
    }

    //分享至好友
    function onMenuShareAppMessage(){
        wx.onMenuShareAppMessage({
            title: 'this is title', // 分享标题
            desc: 'this is desc', // 分享描述
            link: 'http://music.163.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: 'http://pic.616pic.com/ys_b_img/00/66/73/9KnqqgZBFe.jpg', // 分享图标
            type: 'link', // 分享类型,music、video或link,不填默认为link
            dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
            success: function () {
            // 用户点击了分享后执行的回调函数
                alert('分享好友成功');
            },
            cancel: function (res) {
                alert('分享好友已取消');
            },
            fail: function (res) {
                alert(JSON.stringify(res));
            }
        });
    }

    //获取网络状态
    function getNetworkType(){
        wx.getNetworkType({
            success: function (res) {
                var networkType = res.networkType; // 返回网络类型2g,3g,4g,wifi
            }
        });
    }

    //使用微信内置地图查看位置接口
    function openLocation(){
        wx.openLocation({
            latitude: 0, // 纬度,浮点数,范围为90 ~ -90
            longitude: 0, // 经度,浮点数,范围为180 ~ -180。
            name: '', // 位置名
            address: '', // 地址详情说明
            scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
            infoUrl: 'http://music.163.com' // 在查看位置界面底部显示的超链接,可点击跳转
        });
    }

    //关闭当前网页窗口接口
    function closeWindow(){
        wx.closeWindow();
    }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值