1.登录微信公众号

设置js接口安全域名

2.获取微信公众号的AppID和AppSecret。

3.前端代码

<!--分享代码开始-->
<script type="text/javascript"  src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>var res = {liveflag:"true","title":"","globalid":"1012743","url":"","image":"","summary":""};function item_info(){return JSON.stringify(res);}try {window.share.shareData(JSON.stringify(res));} catch(e) {}//微信相关代码wx.error(function (res) {//alert(res.errMsg);});wx.ready(function () {// 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口wx.onMenuShareTimeline({title: '', // 分享标题desc: "",link: "",imgUrl: "", // 分享图标success: function () {alert("分享成功!");}});// 获取“分享给朋友”按钮点击状态及自定义分享内容接口wx.onMenuShareAppMessage({title: '',desc: "",link: "",imgUrl: "",type: 'link',success: function () {alert("分享成功!");}});// 获取“分享到QQ好友”按钮点击状态及自定义分享内容接口wx.onMenuShareQQ({title: '',desc: '',link: '',imgUrl: '',success: function (res) {alert('已分享');}});       });var pImg  = "";$.ajax({type: "GET",data: " ",url: "http://xxxx.com/wx_sign.php?callback=?t="+ Math.random(),dataType: "json",success: function (data) {console.log(data.status);console.log(data);wx.config({debug: false,appId: data.result.appId,timestamp: data.result.timestamp,nonceStr: data.result.nonceStr,signature: data.result.signature,jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone']});},error: function () {alert("接口请求失败!");}});
</script>
<!--分享代码结束-->

4. php代码

wx_sign.php

<?php
require_once "jssdk.php";
$jssdk = new JSSDK('appid','appservert');
$signPackage = $jssdk->GetSignPackage();
header('Content-Type:application/json; charset=utf-8');
$data = array("status"=>1,"message"=>"成功","result"=>$signPackage);
exit(json_encode($data));?>

jssdk.php

<?php
class JSSDK {private $appId;private $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]";if($_SERVER["HTTP_REFERER"]){$url = $_SERVER["HTTP_REFERER"];}$timestamp = time();$nonceStr = $this->createNonceStr();// 这里参数的顺序要按照 key 值 ASCII 码升序排序$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";$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"));if ($data->expire_time < time()) {$accessToken = $this->getAccessToken();// 如果是企业号用以下 URL 获取 ticket// $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";$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://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";$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;}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, true);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);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);}
}

然后点击分享就会调试信息啦

php 微信jssdk分享相关推荐

  1. 微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置

    微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置 一.JS部分 wx.ready(function () {// 1 判 ...

  2. 微信分享源码PHP版JS-SDK接口_微信JSSDK分享功能图文实例详解

    本文实例讲述了微信JSSDK分享功能.分享给大家供大家参考,具体如下: 这里以微信分享到朋友圈,分享给微信好友为例为参考,进行调用测试,想添加其他的功能,自行查看开发人员文档即可 工欲善其事,必先利其 ...

  3. android 微信分享 发送失败,微信jssdk,分享给好友时,type为music,分享成功却发送失败...

    wx.config({ debug: true, appId: '{$js_sdk[appId]}', // 必填,公众号的唯一标识 timestamp: '{$js_sdk[timestamp]}' ...

  4. 微信JSSDK分享页面自定义当前链接最简单示例

    这个是使用微信原本的Deom修改 但是一定要注意几个注意事项,代码很简单,却让我一周mmp 在微信开发者工具调试,有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要 ...

  5. 微信分享 ajax冲突,微信jssdk分享功能开发及解决ajax跨域的问题

    微信JS-SDK说明文档 微信JS-SDK Demo 我所要实现的分享功能要求:只要提供一段js代码给前端美工放置在静态页面等就可以实现分享功能. js代码如下: url=location.href; ...

  6. 企业微信jssdk分享接口管理系统

    服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议       ...

  7. react中使用微信jssdk分享总结

    1.线上微信官方jssdk文档 jssdk文档 2.react项目中添加配置jssdk的工具方法 javascript 代码 export function jsSdkConfig(axios, ho ...

  8. 微信js-sdk分享链接自定义图片描述标题

    首先需求是:将微信扫一扫的分享功能 回形针图片 描述 标题 换成自定义的 大概是从上往下的这个效果. 好了需求已经很明确了,接下来说一下实现过程.先贴两个很有用的帖子可以借鉴参考: http://ww ...

  9. php 微信 jssdk 分享到朋友和朋友圈,带缩略图

    最近修改了一下转发链接到朋友和分享朋友圈没有缩略图的问题,以前都可以直接抓取的,现在官方改了,只能用微信JS-SDK接口.话不多说,进入正题. 1.在认证好的公众号里面配置业务域名和JS接口安全域名, ...

  10. 微信jssdk分享链接问题fail,link must be in js secure domain list

    关于微信分享链接自定义出现fail,link must be in js secure domain list 前言: 后端代码就不用说了,能正常获取到数据... 用微信pc端分享能成功,但是真机却不 ...

最新文章

  1. Alpha 冲刺 (5/10)
  2. python线下培训-天津python培训,0基础学python线上还是线下好?
  3. windoes硬盘备份(数据迁移)的方法
  4. ariel字体_播客第58集:软件开发人员和freeCodeCamp超级巨星Ariel Leslie
  5. MySQL数据库的自动备份与数据库被破坏后的恢复
  6. java md5加密解密_java MD5加密解密 | 学步园
  7. 特殊权限:SUID,SGID,Sticky
  8. Ioc模式(又称DI:Dependency Injection 依赖注射)
  9. 零基础学python要多久-零基础如何学Python?小白学Python需要多久?
  10. html网页设计作业代码web网页设计实例作业 ——放飞梦想文化主题(3页)
  11. 调洪演算双辅助线法程序(源代码),首次公开!
  12. PLC(二)西门子S7-200PLC基础知识
  13. c语言兵器谱,程序员兵器谱——那些男人们梦寐以求的终极键盘
  14. unlink php 实例,PHP unlink()用法及代碼示例
  15. JAVA实现Doc与Docx互转
  16. Dockers(六)- Docker镜像使用
  17. 计算机领域nt=p,09计算机基础PwerPoint单选.doc
  18. 2021安洵杯ezjson-wp
  19. office2010-插入SmartArt图形
  20. fdtd中时间监视器怎么放_FDTD基本介绍

热门文章

  1. CentOS 如何在线乔迁 AlmaLinux 或 Rocky Linux ,且避免数据中心停机
  2. 从存储、实时、安全的角度谈如何建立完整可用的企业大数据平台
  3. python json安装_python json
  4. 产品经理和程序员之间的硝烟
  5. 【莫队算法】小z的袜子
  6. 易基因|14种全基因组DNA甲基化测序(WGBS)标准分析比对软件的比较| 生信专区
  7. 纯纯的css画美美的彩虹
  8. SQL Server数据库mdf文件中了勒索病毒 mercury。扩展名变为 mercury
  9. 不知道照片加水印怎么弄?这三个方法让你轻松实现
  10. 数世咨询对话安全专家:全面剖析腾讯安全NDR技术实力与应用实践