微信公众平台-微信发送朋友、分享到QQ、分享QQ空间、分享腾讯微博-JSSDk接口

本文主要是介绍微信公众平台-微信发送朋友、分享到QQ、分享QQ空间、分享腾讯微博-JSSDk接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jssdk.php:

<?php
class JSSDK {private $appId;     //公众号的appidprivate $appSecret;//公众号的密钥public function __construct($appId, $appSecret) {$this->appId = $appId;$this->appSecret = $appSecret;}//获取签名public function getSignPackage() {$jsapiTicket = $this->getJsApiTicket();//获取票据// 注意 URL 一定要动态获取,不能 hardcode.$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";$timestamp = time();$nonceStr = $this->createNonceStr();// 这里参数的顺序要按照 key 值 ASCII 码升序排序$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";//print_r($string);$signature = sha1($string);$signPackage = array("appId"     => $this->appId,"nonceStr"  => $nonceStr,"timestamp" => $timestamp,"url"       => $url,"signature" => $signature,"rawString" => $string);return $signPackage;}private function createNonceStr($length = 16) {$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}private function getJsApiTicket() {// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例$data = json_decode($this->get_php_file("jsapi_ticket.php"));//print_r($data);if ($data->expire_time < time()) {$accessToken = $this->getAccessToken();//重新获取Token// 如果是企业号用以下 URL 获取 ticket$url ="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$accessToken&type=jsapi";$res = json_decode($this->httpGet($url));$ticket = $res->ticket;if ($ticket) {$data->expire_time = time() + 7000;$data->jsapi_ticket = $ticket;$this->set_php_file("jsapi_ticket.php", json_encode($data));}} else {$ticket = $data->jsapi_ticket;}return $ticket;}private function getAccessToken() {// access_token 应该全局存储与更新,以下代码以写入到文件中做示例$data = json_decode($this->get_php_file("access_token.php"));if ($data->expire_time < time()) {// 如果是企业号用以下URL获取access_token$url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";$res = json_decode($this->httpGet($url));$access_token = $res->access_token;if ($access_token) {$data->expire_time = time() + 7000;$data->access_token = $access_token;$this->set_php_file("access_token.php", json_encode($data));}} else {$access_token = $data->access_token;}return $access_token;//print_r($access_token);}private function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);// 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。// 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($curl, CURLOPT_URL, $url);$res = curl_exec($curl);curl_close($curl);return $res;}private function get_php_file($filename) {return trim(substr(file_get_contents($filename), 15));}private function set_php_file($filename, $content) {$fp = fopen($filename, "w");fwrite($fp, "<?php exit();?>" . $content);fclose($fp);}
}

注意:如果服务器获取不到token和ticket值,则将   该页面的true改为false,如:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

access_token.php:

<?php exit();?>{"access_token":"hnLAi1QXfbWOAE08mRbahYcgiwlckr7dJzl8ZSxzpQD50k412Os-SCWhoOIDIFtbaVQXGlZdCFhKdGrsZBHLry82svDEbMZqE-MRndW9QsZVahlc3pQ_MveWy0IcCHjpKBDbAHAULN","expire_time":1476959075}

jsapi_ticket.php:

<?php exit();?>{"jsapi_ticket":"sM4AOVdWfPE4DxkXGEs8VLfHrspYnm2ELqP83rmcZUtbKwTtvg-6VgnKtftAyfotuMZEfUAA0rFOwfRsr5r7ng","expire_time":1476959075}

index.php:

<?php
error_reporting(E_ALL^E_NOTICE);
require_once "jssdk.php";
$jssdk = new JSSDK("", "");
$signPackage = $jssdk->getSignPackage();
?><script>wx.config({debug: false, //调试阶段建议开启appId: '<?php echo $signPackage["appId"];?>',timestamp: '<?php echo $signPackage["timestamp"];?>',nonceStr: '<?php echo $signPackage["nonceStr"];?>',signature: '<?php echo $signPackage["signature"];?>',jsApiList: ["onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareWeibo","onMenuShareQZone"]});wx.ready(function () {// 在这里调用 API//分享朋友圈wx.onMenuShareTimeline({title: '巴西奥运的另一面', // 分享标题link: 'http://www.zeromonitor.com/zmer/market/video1/index.php', // 分享链接imgUrl: 'http://www.zeromonitor.com/zmer/market/images/1.jpg', // 分享图标success: function () {// 用户确认分享后执行的回调函数//alert("分享朋友圈成功");},cancel: function () {// 用户取消分享后执行的回调函数//alert("分享朋友圈失败");}});//分享朋友wx.onMenuShareAppMessage({title: '巴西奥运的另一面', // 分享标题desc: '引起1000w+观看的奥运视频,到底发生了什么', // 分享内容link: 'http://www.zeromonitor.com/zmer/market/video1/index.php', // 分享链接imgUrl: 'http://www.zeromonitor.com/zmer/market/images/1.jpg', // 分享图标type: 'link',// 分享类型,music、video或link,不填默认为linkdataUrl:'', // 如果type是music或video,则要提供数据链接,默认为空success: function () {// 用户确认分享后执行的回调函数//alert("分享朋友成功");},cancel: function () {// 用户取消分享后执行的回调函数//alert("分享朋友失败");}});//分享QQwx.onMenuShareQQ({title: '巴西奥运的另一面', // 分享标题desc: '引起1000w+观看的奥运视频,到底发生了什么', // 分享描述link: 'http://www.zeromonitor.com/zmer/market/video1/index.php', // 分享链接imgUrl: 'http://www.zeromonitor.com/zmer/market/images/1.jpg', // 分享图标success: function () {// 用户确认分享后执行的回调函数},cancel: function () {// 用户取消分享后执行的回调函数}});//分享腾讯微博wx.onMenuShareWeibo({title: '巴西奥运的另一面', // 分享标题desc: '引起1000w+观看的奥运视频,到底发生了什么', // 分享描述link: 'http://www.zeromonitor.com/zmer/market/video1/index.php', // 分享链接imgUrl: 'http://www.zeromonitor.com/zmer/market/images/1.jpg', // 分享图标success: function () {// 用户确认分享后执行的回调函数},cancel: function () {// 用户取消分享后执行的回调函数}});//分享QQ空间wx.onMenuShareQZone({title: '巴西奥运的另一面', // 分享标题desc: '引起1000w+观看的奥运视频,到底发生了什么', // 分享描述link: 'http://www.zeromonitor.com/zmer/market/video1/index.php', // 分享链接imgUrl: 'http://www.zeromonitor.com/zmer/market/images/1.jpg', // 分享图标success: function () {// 用户确认分享后执行的回调函数},cancel: function () {// 用户取消分享后执行的回调函数}});
//});wx.error(function(res){//alert("调用失败");});</script>

 

这篇关于微信公众平台-微信发送朋友、分享到QQ、分享QQ空间、分享腾讯微博-JSSDk接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084749

相关文章

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor