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

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

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. CPL学习笔记(二)

    数组 数组(array) 声明通用格式为: typeName arrayName[arraySize]. arrayName指定元素数目,必须为整型常量或const值.(不能是变量) int a[3] ...

  2. CentOS7系统引导顺序以及排障

    引导顺序 UEFi或BIOS初始化,运行POST开机自检 选择启动设备 引导装载程序, centos7是grub2 加载装载程序的配置文件:/etc/grub.d/  /etc/default/gru ...

  3. pandas处理大文本数据

    当数据文件是百万级数据时,设置chunksize来分批次处理数据 案例:美国总统竞选时的数据分析 读取数据 import numpy as np import pandas as pdfrom pan ...

  4. 【前端_js】Json对象和Json字符串的区别

    转载1: Json对象和Json字符串的区别 转载2: JSON字符串与JSON对象的区别

  5. windows下配置Nginx支持php

    编辑配置文件nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; ...

  6. 安装pymysql后,import pymysql,pycharm编辑器中报错

    cmd 中运行 pip3 install PyMySQL 或者采用git git clone https://github.com/PyMySQL/PyMySQL cd PyMySQL/ python ...

  7. LeetCode(219) Contains Duplicate II

    题目 Given an array of integers and an integer k, find out whether there are two distinct indices i an ...

  8. WZK的减肥计划

    WZK 的减肥计划(plan.cpp/ plan.in/ plan.out)问题描述:WZK 发现他的体重正迅猛的上升着,对此他感到非常焦虑,想要制定出一套完美的减肥计划. 于是 WZK 翻阅资料,查 ...

  9. ACM-ICPC 2018 徐州赛区网络预赛 F. Features Track

    262144K   Morgana is learning computer vision, and he likes cats, too. One day he wants to find the ...

  10. Centos7 install Openstack Juno (RDO) (转载)

    原文地址:http://www.hdume.com/centos-7-0%E5%AE%89%E8%A3%85openstack/ 1.安装系统,Centos7镜像采用CentOS-7.0-1406-x ...