本文以微信分享到朋友圈,分享给微信好友为例为参考,进行调用测试,想添加其他的功能,自行查看开发人员文档即可

工欲善其事,必先利其器,好好利用下边的帮助工具,都是腾讯给开发人员的工具

1.微信开发者说明文档:点击查看

2.微信WEB开发者工具:

Windows 64位版本:下载地址

Windows 32位版本:下载地址

Mac版本:下载地址

3.微信JSSDK分享sample:点击下载

4.在线DEMO:http://203.195.235.76/jssdk/

微信版本6.0以后,原有的WeixinJSBridge.on('menu:share:timeline', function (argv) {}不再可在以使用,那如何在使用微信的其他功能呢?官方给出了JSSDK的使用,帮助我们解决~

前言:

虽然微信提供了JSSDK,但是这不意味着你可以用自定义的按钮来直接打开微信的分享界面,这套JSSDK只是把微信分享接口的内容定义好了,实际还是需要用户点击右上角的菜单按钮进行主动的分享,用户点开分享界面之后,出现的内容就会是你定义的分享标题、图片和链接

  • 2.实测图解:
  • 2.1
    测试页面:
2.2分享到朋友圈:
 
 
 
 
 
 

2.3分享到朋友圈:

 
 
(这个是触发success的效果,配图描述写错了,抱歉)
 
(这个是触发cancel的效果)
 
 

2.3调试界面:

后台代码(jssdk.PHP见后边):

  1. //获取apptoken
  2. require_once "jssdk.php";
  3. $jssdk = new JSSDK($appid,$appsecret);//这里填写自己的appid 和secret
  4. $signPackage = $jssdk->GetSignPackage();
  5. $this->assign("signPackage",$signPackage);

JS配置代码

  1. <script type="text/javascript" src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
  2. <script type="text/javascript">
  3. wx.config({
  4. debug: false,
  5. appId: '{$signPackage["appId"]}',
  6. timestamp: '{$signPackage["timestamp"]}',
  7. nonceStr: '{$signPackage["nonceStr"]}',
  8. signature: '{$signPackage["signature"]}',
  9. jsApiList: [
  10. // 所有要调用的 API 都要加到这个列表中
  11. 'checkJsApi',
  12. 'onMenuShareTimeline',
  13. 'onMenuShareAppMessage',
  14. 'onMenuShareQQ',
  15. 'onMenuShareWeibo',
  16. 'onMenuShareQZone'
  17. ]
  18. });
  19. </script>
  20. <script type="text/javascript" src='http://203.195.235.76/jssdk/js/zepto.min.js'></script>

JS分享代码:

  1. <script type="text/javascript">
  2. //完成wx.config,执行这里
  3. wx.ready(function () {
  4. //分享到朋友圈
  5. wx.onMenuShareTimeline({
  6. title: '1111111', // 分享标题
  7. link:window.location.href,
  8. imgUrl: "{pigcms:$res['pic']}", // 分享图标
  9. success: function () {
  10. // 分享成功执行此回调函数
  11. alert('success');
  12. },
  13. cancel: function () {
  14. alert('cancel');
  15. }
  16. });
  17. //分享给朋友
  18. wx.onMenuShareAppMessage({
  19. title: '22222', // 分享标题
  20. desc: '22222',
  21. link:window.location.href,
  22. imgUrl: "{pigcms:$res['pic']}", // 分享图标
  23. trigger: function (res) {
  24. // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
  25. },
  26. success: function (res) {
  27. // 分享成功执行此回调函数
  28. alert('已分享');
  29. },
  30. cancel: function (res) {
  31. alert('已取消');
  32. },
  33. fail: function (res) {
  34. alert(JSON.stringify(res));
  35. }
  36. });
  37. });
  38. </script>

JSSDK类

jssdk.php

    1. <?php
    2. class JSSDK {
    3. private $appId;
    4. private $appSecret;
    5. public function __construct($appId, $appSecret) {
    6. $this->appId = $appId;
    7. $this->appSecret = $appSecret;
    8. }
    9. public function getSignPackage() {
    10. $jsapiTicket = $this->getJsApiTicket();
    11. // 注意 URL 一定要动态获取,不能 hardcode.
    12. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    13. $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    14. $timestamp = time();
    15. $nonceStr = $this->createNonceStr();
    16. // 这里参数的顺序要按照 key 值 ASCII 码升序排序
    17. $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
    18. $signature = sha1($string);
    19. $signPackage = array(
    20. "appId"     => $this->appId,
    21. "nonceStr"  => $nonceStr,
    22. "timestamp" => $timestamp,
    23. "url"       => $url,
    24. "signature" => $signature,
    25. "rawString" => $string
    26. );
    27. return $signPackage;
    28. }
    29. private function createNonceStr($length = 16) {
    30. $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    31. $str = "";
    32. for ($i = 0; $i < $length; $i++) {
    33. $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    34. }
    35. return $str;
    36. }
    37. private function getJsApiTicket() {
    38. $accessToken = $this->getAccessToken();
    39. // 如果是企业号用以下 URL 获取 ticket
    40. // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
    41. $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
    42. $res = json_decode($this->httpGet($url));
    43. $ticket = $res->ticket;
    44. return $ticket;
    45. }
    46. private function getAccessToken() {
    47. // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
    48. // 如果是企业号用以下URL获取access_token
    49. // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
    50. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
    51. $res = json_decode($this->httpGet($url));
    52. $access_token = $res->access_token;
    53. return $access_token;
    54. }
    55. private function httpGet($url) {
    56. $curl = curl_init();
    57. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    58. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    59. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    60. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    61. curl_setopt($curl, CURLOPT_URL, $url);
    62. $res = curl_exec($curl);
    63. curl_close($curl);
    64. return $res;
    65. }
    66. }

微信JSSDK分享功能详解的更多相关文章

  1. 微信JS-SDK分享功能的.Net实现代码

    JS-SDK接口是什么? 为了方便开发者实现微信内的网页(基于微信浏览器访问的网页)功能,比如拍照.选图.语音.位置等手机系统的能力,并方便开发者直接使用微信分享.扫一扫等微信特有的能力,微信推出了J ...

  2. 微信jssdk分享功能,jssdk成功调用,分享内容自定义失败

    前提:调用微信jssdk分享功能,通过微信开发者工具调试,调用正常,无任何报错信息. 问题:调用成功,且开发者工具正常显示,但是通过真机调试,分享出去后,自定义内容失效,为微信自动获取的默认内容!截止 ...

  3. 微信jssdk分享功能开发

    先理解下分享: 在app端 ,经常能看见 分享按钮的功能,(分享给朋友,分享到朋友圈,分享到QQ空间等等): https://open.weixin.qq.com/(微信开发平台),这需要到开放平台注 ...

  4. 微信JSSDK分享功能实现

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

  5. [转]Vue项目全局配置微信分享思路详解

    这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...

  6. ThinkPHP5集成JS-SDK实现微信自定义分享功能

    最近开发一个项目,需要将链接分享给好友时能够自定义标题.简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文. 一.准备工作 1.认证的公众号 不管是订阅号还是服 ...

  7. Jmeter常用功能详解

    嘻嘻,忙碌的一周,马上就到周四了~明天就是周五了,可以去嗨了! 这几天正式成立了一个微信订阅号,旨在免费帮助需要入门软件测试的小白! 各位走过路过的亲,欢迎订阅哦:扫描二维码即可订阅

  8. java实现微信扫一扫详解

    java实现微信扫一扫详解 一.微信JS-SDK参数配置及查找 JS安全域名配置(查找:微信公众号里-公众号设置-功能设置页) 注:1.安全域名外网必须可以访问的到  2.域名不能有下划线  3.要将 ...

  9. SNS社交系统“ThinkSNS V4.6”活动应用功能详解及应用场景举例

    sns社交系统ThinkSNS目前拥有功能:朋友圈(微博).微吧(论坛).频道.积分商城.IM即时聊天.直播.问答.活动.资讯(CMS).商城.广场.找人.搜索.评论.点赞.转发.分享.话题.积分.充 ...

随机推荐

  1. 【Git版本控制】Git的merge合并分支命令

    1.实例 git checkout master git merge dev merge合并分支只对当前分支master产生影响,被合并的分支dev不受影响. 假设你有两个分支,“stable” 和 ...

  2. python入门:输出1-10以内除去7的所有数(简)

    #!/usr/bin/env python # -*- coding:utf-8 -*- #输出1-10以内除去7的所有数(简) """ 给变量kaishi赋值1,whi ...

  3. MySQL中文转换成拼音的函数

    CREATE DEFINER=`root`@`localhost` FUNCTION `fristPinyin`(`P_NAME` VARCHAR(255) CHARSET utf8) RETURNS ...

  4. DC 课程内容

  5. Oracle redo与undo 第一弹

      一. 什么是redo(用于前滚数据) redo也就是重做日志文件(redo log file),Oracle维护着两类重做日志文件:在线(online)重做日志文件和归档(archived)重做日 ...

  6. LeetCode(282) Peeking Iterator

    题目 Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peek ...

  7. nslookup、dig命令Linux安装包

    linux下提供nslookup,dig命令的软件就是 bind-utils yum install bind-utils -y

  8. UVA - 11572 Unique Snowflakes 滑动扫描

    题目:点击打开题目链接 思路:从左往右扫描,定义扫描左端点L,右端点R,保证每次往几何中添加的都是符合要求的连续的数列中的元素,L和R从0扫到n,复杂度为O(n),使用set维护子数列,set查找删除 ...

  9. Leetcode 145. 二叉树的后序遍历

    题目链接 https://leetcode-cn.com/problems/binary-tree-postorder-traversal/description/ 题目描述 给定一个二叉树,返回它的 ...

  10. matlab画图颜色设置

    各种颜色属性选项选项意义选项意义'r' 红色 'm' 粉红'g' 绿色 'c' 青色'b' 兰色 'w' 白色'y' 黄色 'k' 黑色各种线型属性选项选项意义选项意义'-' 实线 '--' 虚线': ...