php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义
https://blog.csdn.net/weixin_42231483/article/details/81585322
最近用PHP的tp3.2.3框架和js写的微信分享功能心得,分享的标题内容图片自定义
纯属个人心得,以下是我的步骤
第一步:登录公众号,进入公众号设置 -> 选中功能设置,找到页面下面的 js接口安全域名,
,点击 js接口安全域名下载红框的txt文件,并上传到你下面填写的域名的根目录下,先上传再点击保存,文件上传的地方不对点击保存会报错,保存成功就代表第一步已经完成,
第二步:这一步还进入微信公众号 开发里面的基本配置页面找到 AppID 和 AppSecret 的值,并设置 IP白名单,如图:
注意:上图 AppID 和 AppSecret 的值一定要获取到并保存起来, IP 也一定要设置
第三步:这一步就是编码了,不多说直接上代码
先上PHP代码
1:先获取 access_token 的值,我把这个 access_token 值保存到数据库的,你们可以利用缓存等,这个看个人爱好
/获取微信签名所需的access_token
public function getAccessToken() {
//查询数据表里面的值
$info = D('WxToken')->find();
if($info['expires_in'] < time()){
//获取token的值
$url_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=第二步获取的AppID的值&secret=第二步获取的AppSecret的值';
$tmp = $this->CURLSend($url_token); //json格式
$obj = json_decode($tmp);
if($obj->access_token != null){
$data['access_token'] = $obj->access_token;
$data['expires_in'] = time() + $obj->expires_in;
if($info['id']){
$res = D('WxToken')->where('id='.$info['id'])->save($data);
}else{
$res = D('WxToken')->add($data);
}
if($res){
$data_new = $obj->access_token;
}else{
$data_new = 'error';
}
return $data_new;
}else return 'error';
}else return $info['access_token'];
}
2:获取微信签名所需的 ticket
//获取微信签名所需的 ticket
public function getTicket(){
$token = $this->getAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$token&type=jsapi";
$tmp = $this->CURLSend($url); //json格式
$obj = json_decode($tmp);
return $obj->ticket;
}
3:获取微信签名
//整理数据并获取微信签名
public function generateSign(){
$noncestr = uniqid();
$timestamp = time();
$url = 'http://' . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
$ticket = $this->getTicket();
if ($ticket) {
$str = 'jsapi_ticket='.$ticket.'&noncestr='.$noncestr.'×tamp='.$timestamp.'&url='.$url;
$signature = sha1($str);
$data['noncestr'] = $noncestr;
$data['timestamp'] = $timestamp;
$data['signature'] = $signature;
$data['appId'] = 第二步获取的AppID的值;
$data['link'] = $url;
return $data;
}
}
4:赋值给模板
public function index(){
$this->assign('wxdata',$this->generateSign());
}
说明:PHP代码已完成下面是 js 代码
5:先在前台页面引入外部 js
<!--引入微信官网给的 jssdk 包-->
<script type="" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
6:接下来就是配置文件了
<script>
//设置配置文件
wx.config({
debug: false, //调试模式是否开启,开启则在PC端控制台console里面打印,在手机端就是弹出状态吗
appId: "{$wxdata['appId']}",
timestamp: "{$wxdata['timestamp']}",
nonceStr: "{$wxdata['noncestr']}",
signature: "{$wxdata['signature']}",
jsApiList: [
'onMenuShareTimeline', //分享到朋友圈
'onMenuShareAppMessage', //分享给朋友
'onMenuShareQQ', //分享给QQ好友
'onMenuShareQZone' //分享到QQ空间
]
});
//调用接口
wx.ready(function(){
//掉用分享给朋友的接口,这里只做分享给朋友,分享到其他地方一次内推
wx.onMenuShareAppMessage({
title: '你要分享的标题', // 分享标题
desc: '分享的内容描述', // 分享描述
link: "当前页面的地址", // 分享链接,注意:该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: "分享要展示的图片", // 分享图标
success: function (res) {
alert('分享成功')
}
});
});
</script>
说明:如果是前后端完全分离,前台利用 ajax 请求接口,直接请求第三步里面的 获取微信签名 的方法就可以了
php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义的更多相关文章
- 页面分享功能,分享好友、朋友圈判断,用share_type做标记 这里用的是jweixin-1.3.2.js
这里用的是jweixin-1.3.2.js trigger: function (res) { //判断分享的状态,好友.朋友圈 localStorage.setItem("share_ty ...
- asp代码写的,微信会员报名转发分享带上下级和邀约人关系并且能微信支付asp编号的
昨天晚上应一个客户要求写了一套代码,实现的功能是: 在微信公众号上注册会员,获取用户的头像和微信名称,进入会员中心报名,报名成功成功后,他如果转发链接给别人,别人打开后则成为他的下级,上面那个算是一个 ...
- JS写小游戏(一):游戏框架
前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 ...
- PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...
- 玩转Javascript 给JS写测试
给js写测试已经不是什么稀奇的事情了,最近项目里用了jasmine和JsTestDriver两种js测试框架.JsTestDriver易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD ...
- 深入解析Backbone.js框架的依赖库Underscore.js的作用
这篇文章主要介绍了深入解析Backbone.js框架的依赖库Underscore.js的作用,用过Node.js的朋友对Underscore一定不会陌生:)需要的朋友可以参考下 backbone必须依 ...
- Node.js写文件的三种方法
Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...
- 用html5 canvas和JS写个数独游戏
为啥要写这个游戏? 因为我儿子二年级数字下册最后一章讲到了数独.他想玩儿. 因为我也想玩有提示功能的数独. 因为我也正想决定要把HTML5和JS搞搞熟.熟悉一个编程平台,最好的办法,就是了解其原理与思 ...
- 用JS写了一个打字游戏,反正我是通不了关
今天想写个简单的游戏, 打字游戏好像都没写过, 那么就写打字游戏吧, gamePad包含了关卡的信息, 可以用来调整给个关卡字符下落的速度: getRandom函数会返回一个字符对象, 这个对象包含了 ...
随机推荐
- 【转】 解释下浏览器是如何判断元素是否匹配某个 CSS 选择器?
先产生一个元素集合,然后从后往前判断: 浏览器先产生一个元素集合,这个集合往往由最后一个部分的索引产生(如果没有索引就是所有元素的集合).然后向上匹配,如果不符合上一个部分,就把元素从集合中删除,直到 ...
- java swing+socket实现多人聊天程序
swing+socket实现多人聊天程序 1.准备工作 先看效果: 客户端项目结构图: 服务端项目结构图: 2.运行原理 服务端 先开一个线程serverListerner,线程中开启一个Server ...
- javaWeb-监听器Listener
监听器Listener (一)监听器Listener javaEE包括13门规范 在课程中主要学习 servlet技术 和 jsp技术 其中 servlet规范包括三个技术点:servlet lis ...
- JAVA面试常见问题之开源框架和容器篇
1.Servlet的生命周期 加载:加载到虚拟机 初始化:init() 一个生命周期中只会被调用一次. 服务:service() 销毁:destroy() 2.转发与重定向的区别 转发在服务器端完成的 ...
- springcloud的服务提供者与服务消费者
1.说明 springcloud中由服务消费者调用服务提供者一共有两种方法rest和feign 2.feign (1)使用feign的方式进行服务调,搭建服务提供者. 创建一个web项目(服务提供者) ...
- maven-home
E:/Soft/Maven/apache-maven-3.3.3 E:\Soft\Maven\apache-maven-3.3.3\conf\settings.xml E:\DellWork\Mave ...
- 洛谷 3089 [USACO13NOV]POGO的牛Pogo-Cow
单调队列优化dp; 对于每个点开个单调队列,按转移到它的点到它的距离从大到小,得分也从大到小排列. 每次枚举当前点前面的所有点,对于每个点的队列中二分一个距离小于等于它到当前点的答案值,放到当前点的队 ...
- 移植thinkPHP的dump()函数
由于公司的开发机没有开xdebug拓展,导致var_dump()在浏览器上看很不方便. 因此,加入从thinkphp搬过来的dump()函数. function dump($var, $echo=tr ...
- mybatis深入理解(三)-----MyBatis事务管理机制
MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面.本文将讲述MyBatis的事务管理的实现机制.首先介绍MyBatis的事务Transaction的接口设计以及其不 ...
- LintCode_44 最小子数组
题目 给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 注意事项 子数组最少包含一个数字 样例 给出数组[1, -1, -2, 1],返回 -3 思路 动态规划解决 C++代码 int m ...