资讯专栏INFORMATION COLUMN

微信自定义分享

roland_reed / 1603人阅读

摘要:第一步登录公众号,进入公众号设置选中功能设置,找到页面下面的接口安全域名点击接口安全域名下载红框的文件,并将文件复制到你下面填写的域名的根目录下,先上传再点击保存,文件上传的地方不对点击保存会报错,保存成功就代表第一步已经完成。

第一步:登录公众号,进入公众号设置 -> 选中功能设置,找到页面下面的 js接口安全域名

点击 js接口安全域名下载红框的txt文件,并将文件复制到你下面填写的域名的根目录下,先上传再点击保存,文件上传的地方不对点击保存会报错,保存成功就代表第一步已经完成。

第二步:进入微信公众号,开发 -> 基本配置 ,可以看到 AppID 和 AppSecret 的值,并设置 IP白名单,如图:


注意:上图 AppID 和 AppSecret 的值一定要获取到并保存起来, IP 也一定要设置

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:获取微信签名所需的 jsapi_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;
    }
    
    private function CURLSend($url) {
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_TIMEOUT, 500);
      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;
    }

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 代码



6:接下来就是配置文件了



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30112.html

相关文章

  • 信自定义分享链接含有汉字分享失败

    摘要:有时候微信分享的链接参数里含有汉字,比如张三这个链接,含有张三两个汉字,这样在微信中会导致自定义分享失败,但是在微信中可以分享成功,使用微信开发者工具也不会报错,这就很扯淡了。后来发现是分享链接的问题,可以用处理一下要分享的链接就可以了有时候微信分享的链接参数里含有汉字,比如www.aaa.com?name=张三这个链接,含有张三两个汉字,这样在ios微信中会导致自定义分享失败,但是在and...

    Yuqi 评论0 收藏0
  • 信自定义分享支持https(php)

    摘要:用户要分享的网址又更分享的标题分享的图片又更仅仅如此分享的描述信息请在之后引入 直接上代码 目录(jssdk在网站更目录) jssdk/jssdk.php jssdk/share.js jssdk.php 代码如下 share.js代码如下 //url = location.href; var url = encodeURIComponent(window.location.hre...

    Maxiye 评论0 收藏0
  • 微信JSSDK分享,解决config:invalid signature问题

    摘要:微信分享可以实现自己的网页在微信自定义图标,标题,还有描述,还可以分享到朋友圈,分享到微信群,分享给朋友等操作。 微信JSSDK分享可以实现自己的网页在微信自定义图标,标题,还有描述,还可以分享到朋友圈,分享到微信群,分享给朋友等操作。 showImg(https://segmentfault.com/img/bVbiGlk?w=1214&h=1079); 上图就是,左侧是分享到朋友圈...

    fsmStudy 评论0 收藏0

发表评论

0条评论

roland_reed

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<