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

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

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. 拓扑排序 topsort

    拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序 ...

  2. 解析Vue.js中的computed工作原理

    我们通过实现一个简单版的和Vue中computed具有相同功能的函数来了解computed是如何工作的.写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指 ...

  3. w3resource_MySQL练习: Aggregate_functions

    w3resource_MySQL练习题:Aggregate_functions   1. Write a query to list the number of jobs available in t ...

  4. python多进程并发进程池Pool

    简介: python中的多进程主要使用到 multiprocessing 这个库.低版本python这个库在使用 multiprocessing.Manager().Queue时会出问题,建议大家升级 ...

  5. 大小端测试C实现

    int is_little_endian(void)//判断是否是小端的函数 { union check_fun { int a; char b; }u1; u1.a=;//先将1(实际上就是0x00 ...

  6. 天问之Linux内核中的不明白的地方

    1. Linux 0.11\linux\kernel\exit.c 文件中, 无论是send_sig()函数还是kill_session()函数中,凡是涉及到发送信号的地方,都是直接    (*p)- ...

  7. 下载linaro android 4.4.2 for panda4460

    $ export MANIFEST_REPO=git://android.git.linaro.org/platform/manifest.git$ export MANIFEST_BRANCH=li ...

  8. webdriver高级应用- 无人工干预地自动上传附件

    方法一:使用webdriver的send_keys方法上传文件,代码如下: #encoding=utf-8 from selenium import webdriver import unittest ...

  9. Linux安装Scala

    下载Scala地址http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz然后解压Scala到指定目录 tar -zxvf scala-2 ...

  10. TensorFlow batch normalize的使用

    TensorFlow batch normalize的使用 batch normalize 经常与CNN搭配使用,据一些研究表面,在RNN层数不是很深的时候使用batch normalize是会用损害 ...