zoukankan      html  css  js  c++  java
  • 微信测试号实现微信分享等功能

    由于个人账号不能微信认证,无法使用分享接口,所以只能用测试号了

    1 申请微信测试号

    申请地址,微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html

    点击“接口测试号申请”,后续操作请根据微信提示来扫码,就ok了。

    2 申请成功

      后面说怎么设置这些。

    3 下载微信的测试代码

      微信网页开发-》微信JS-SDK

    拉到最下面,就可以看见下载链接了

     4 将下载的代码放到自己的服务器上

        没有的自己去申请个免费的新浪云,或者其他的

     5 接口配置信息

    URL设置为自己服务器地址上wx_sample的地址。

    Token随意设置, 和wx_sample里的define("TOKEN", "weixin")一致就行。

    wx_sample没有在微信下载的源码里,代码如下:

    <?php
    /**
      * wechat php test
      */
    
    //define your token
    define("TOKEN", "weixin");
    $wechatObj = new wechatCallbackapiTest();
    $wechatObj->valid();
    
    class wechatCallbackapiTest
    {
        public function valid()
        {
            $echoStr = $_GET["echostr"];
            //valid signature , option
            if($this->checkSignature()){
                echo $echoStr;
                exit;
            }
        }
            
        private function checkSignature()
        {
            // you must define TOKEN by yourself
            if (!defined("TOKEN")) {
                throw new Exception('TOKEN is not defined!');
            }
            
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];
            
            $token = TOKEN;
            $tmpArr = array($token, $timestamp, $nonce);
            // use SORT_STRING rule
            sort($tmpArr, SORT_STRING);
            $tmpStr = implode( $tmpArr );
            $tmpStr = sha1( $tmpStr );
            
            if( $tmpStr == $signature ){
                return true;
            }else{
                return false;
            }
        }
    }
    
    ?>

    6 JS安全域名

     就是自己服务器地址

    7 扫码关注,只有关注的微信号才能测试

    8 测试号就设置完成了,现在修改sample.php文件

    首先appid和appsecret要和测试号上的一致

    $jssdk = new JSSDK("wx4a14bf95e973b059", "af99ce68694f39e2712e7cf7c22fe224");

    在wx.config中,配置要使用的接口

    jsApiList: [
          // 所有要调用的 API 都要加到这个列表中
        'onMenuShareAppMessage','onMenuShareTimeline'
        ]

    最后在wx.ready中写具体接口,代码如下:

    <?php
    require_once "jssdk.php";
    $jssdk = new JSSDK("wx4a14bf95e973b059", "af99ce68694f39e2712e7cf7c22fe224");
    $signPackage = $jssdk->GetSignPackage();
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title></title>
    </head>
    <body>
       微信分享测试
    </body>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script>
      /*
       * 注意:
       * 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
       * 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
       * 3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
       *
       * 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈:
       * 邮箱地址:weixin-open@qq.com
       * 邮件主题:【微信JS-SDK反馈】具体问题
       * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。
       */
      wx.config({
        debug: true,
        appId: '<?php echo $signPackage["appId"];?>',
        timestamp: <?php echo $signPackage["timestamp"];?>,
        nonceStr: '<?php echo $signPackage["nonceStr"];?>',
        signature: '<?php echo $signPackage["signature"];?>',
        jsApiList: [
          // 所有要调用的 API 都要加到这个列表中
        'onMenuShareAppMessage','onMenuShareTimeline'
        ]
      });
    
    
      wx.ready(function () {
        
        //分享朋友圈
        wx.onMenuShareTimeline({
            title: '分享标题', // 分享标题
            link: 'http://www.baidu.com', // 分享链接
            imgUrl: '', // 分享图标
            success: function () { 
                // 用户确认分享后执行的回调函数
            },
            cancel: function () { 
                // 用户取消分享后执行的回调函数
            }
        });
    
        //分享给朋友
        wx.onMenuShareAppMessage({
            title: '微信分享标题', // 分享标题
            desc: '微信分享描述', // 分享描述
            link: 'http://www.baidu.com', // 分享链接
            imgUrl: '', // 分享图标
            type: '', // 分享类型,music、video或link,不填默认为link
            dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
            success: function () { 
                // 用户确认分享后执行的回调函数
            },
            cancel: function () { 
                // 用户取消分享后执行的回调函数
            }
        });
      });
    </script>
    </html>

    9 在微信上打开,并分享

    微信上打开网址   120.24.188.118/web/sample/sample.php

    然后分享,就可以看到分享配置里的标题、图片等分享内容

    10 问题

    遇到invaild signature错误。找了半天,发现jssdk.php中获取的token为空。

    以为是php的curl没开,后来发现php.ini已经开了。然后百度到curl版本问题,将httpGet中这两行设置为false就行了。

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/6207830.html
Copyright © 2011-2022 走看看