php框架tp3.2.3和js写的微信分享功能心得,分享的标题内容图片自定义

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 请求接口,直接请求第三步里面的 获取微信签名 的方法就可以了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112880.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python实现 猴子摘香蕉「建议收藏」

    python实现 猴子摘香蕉「建议收藏」#猴子摘香蕉importsys#找到箱子defmove():globaliwhileTrue:a_1=input(“输入你下步走的地方:”)whileTrue:ifa_1==b:i+=1print(‘找到箱子,通过第一关,进入第二关’)push()else:.

  • 完整软件研发流程「建议收藏」

    完整软件研发流程「建议收藏」软件产品开发流程:下图所示的是一个软件产品开发大体上所需要经历的全部流程:1、启动在项目启动阶段,主要确定项目的目标及其可行性。我们需要对项目的背景、干系人、解决的问题等等进行了解。并编制项目章程和组建项目团队,包括:产品经理、架构工程师、UI工程师、开发工程师、测试工程师等。完成以上准备工作之后,召开项目启动会,启动会结束则进入下一步的工作。2、规划…

  • oracle 数据库隔离级别

    oracle 数据库隔离级别[b]事务不同引发的状况:[/b]脏读(Dirtyreads)一个事务读取另一个事务尚未提交的修改时,产生脏读很多数据库允许脏读以避免排它锁的竞争。不可重复读(Nonrepeatablereads)同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发…

  • Java并发的CAS原理详解[通俗易懂]

    Java并发的CAS原理详解[通俗易懂]Java并发编程中的CAS原理是很重要的概念。CAS加volatile关键字是实现并发包的基石。没有CAS就不会有并发包,synchronized是一种独占锁、悲观锁,java.util.concurrent中借助了CAS指令实现了一种区别于synchronized的一种乐观锁。乐观锁和悲观锁的概念请参考Java中的21种锁。在Java中java.util.concurrent.atomic包下面的原子变量就是使用了乐观锁的一种实现方式CAS实现。在JDK5之前Java语言是靠synchroniz

    2022年10月10日
  • 算法学习–整型转字符串

    算法学习–整型转字符串字符串转整型的逆过程代码思路:1、输入一个整型数,判断整型数是否<0;2、不断地对整型数做取余,得出余数与‘0’相加,然后整型除去10,就是说,把整型个十百千每一位都取出来,变成ASCII码的数字,存起来;3、最后把正负号补上。代码如下:#include#include#include#includeusingnamespacestd;

    2022年10月19日
  • 用idea搭建springboot项目_javaspringboot项目

    用idea搭建springboot项目_javaspringboot项目1.file->new->project2.springinitializr->next点击finish完成生成的文件夹目录如下主要关注三个截图上的3个文件;1.DemoApplication.java是springboot的项目启动类;里面的代码如图所示2.application.properties是springboot的项目配置文件;以前ssm的众多xml配置文件,都可以在这一个文件中配置;当然默认现在这个…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号