微信带图分享

微信分享不带图怎么办,微信转发不带图怎么办,怎么办怎么办

1、微信公众平台申请 appId, SecKey, 开通JSAPI

<?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 = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
		$url = $_GET[‘url‘];
		$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(file_get_contents("jsapi_ticket.json"));
		if ($data->expire_time < time()) {
			$accessToken = $this->getAccessToken();
			$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;

				file_put_contents("jsapi_ticket.json", json_encode($data));

// 				$fp = fopen("jsapi_ticket.json", "w");
// 				fwrite($fp, json_encode($data));
// 				fclose($fp);
			}
		} else {
			$ticket = $data->jsapi_ticket;
		}

		return $ticket;
	}

	private function getAccessToken() {
		// access_token 应该全局存储与更新,以下代码以写入到文件中做示例
		$data = json_decode(file_get_contents("access_token.json"));
		if ($data->expire_time < time()) {
			$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;
				$fp = fopen("access_token.json", "w");
				fwrite($fp, json_encode($data));
				fclose($fp);
			}
		} 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);
		curl_setopt($curl, CURLOPT_URL, $url);

		$res = curl_exec($curl);
		curl_close($curl);

		return $res;
	}
}

header("Content-Security-Policy: script-src ‘self‘; object-src ‘none‘;style-src cdn.example.org third-party.org; child-src https:");

$jssdk = new JSSDK("app_id", "sec_key");
$signPackage = $jssdk->GetSignPackage();

echo json_encode($signPackage);
exit;

  

2、前端 导入:

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

 

3、延迟加载

$(function (){

      if (window.navigator.userAgent.toLowerCase().indexOf("micromessenger") > -1) {

    	  setTimeout("share_init()", 1000);

      }

});

function share_init()
{

    $.ajax({
    	  url: ‘/wap/wx_jssdk.php‘,
    	  type:‘get‘,
    	  data : {url : window.location.href},
    	  dataType:‘json‘,
    	  success:function(result) {

              wx.config({
            	debug: false,
          	    appId: result.appId,
          	    timestamp: result.timestamp,
          	    nonceStr: result.nonceStr,
          	    signature: result.signature,
          	    jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage"]
          	  });

			  share_img_url = $(".product_detail_img")[0];

          	  wx.ready(function () {

          		wx.onMenuShareTimeline({
          	      title: $(".goods-detail-name dt").text(),
          	      link: window.location.href,
          	      imgUrl: $(share_img_url).attr("src"),
          	      trigger: function (res) {

          	      },
          	      success: function (res) {

          	      },
          	      cancel: function (res) {

          	      },
          	      fail: function (res) {

          	      }
          	    });

				wx.onMenuShareAppMessage({
				  title: $(".goods-detail-name dt").text(),
				  desc: $(".goods-detail-name dt").text(),
				  link: window.location.href,
				  imgUrl: $(share_img_url).attr("src"),
				  trigger: function (res) {

				  },
				  success: function (res) {

				  },
				  cancel: function (res) {

				  },
				  fail: function (res) {
				  }
			 });

          	  });

    	  }
      });

}

 

4、更多JS-API

http://203.195.235.76/jssdk/#menu-share

原文地址:https://www.cnblogs.com/shopda/p/8970175.html

时间: 2024-08-30 14:15:24

微信带图分享的相关文章

开源分享 一(StickerCamera + 仿微信多图选择)

开源分享 一 由于项目需要,后期会在项目中加入给图片贴图或者打标签的功能,无意在网上发现一个类似的开源项目,便在此分享,与大家分享学习.除了该项目外,也同时分享一个仿微信实现多图选择的例子,下面做简单介绍. 一.StickerCamera 介绍: 一款集成了相机,图片裁剪,给图片贴图,打标签的APP.所需要的编译是 java 8. 运行效果展示: 使用说明: 实现相机功能 实现对图片进行裁剪功能 图片的滤镜功能 能为图片添加贴纸(贴纸可移动,放大,旋转) 能为图片添加标签(同样可以移动) 本地保

纯Java实现微信朋友圈分享图

纯Java实现微信朋友圈分享图 1.实现分享图的效果 2.开发环境 2.1 JDK * oracle's jdk 1.8以上 2.2 字体 * 若选择了微软雅黑字体又是代码部署到Linux,则需要安装微软雅黑字体,字体安装方式自行google 3. 加载背景 3.1 加载背景图 这是使用白色框底来作背景图1. java code //这里从项目resources加载背景图,读文件到输入流,代码作了简列 InputStream background = null BufferedImage zoo

Android应用实现微信登录与分享

Android应用实现微信登录与分享 1. 闲话(可直接无视 项目慢慢的推进,逐渐的做到了微信第三方登录的功能模块了.其实我想说Orz,我等这一天等了好久了,想做个微信验证登录都等了两个多星期咧(其实是我们这边出了点问题),先要申请微信开放平台的帐号,在里面创建一个应用,通过审核之后再交300软妹币,是的,你没有听错,上交300软妹币(听说会成为传说中的认证开发者)才可以获得应用第三方登录的权限,否则只能够分享到盆友圈.中间也是遇到了一些小问题,微信那边的文档写的也不是特别的清楚,还有一些关于微

关于微信二次分享,描述变链接的解决方法(一)----文档说明

http://www.cnblogs.com/joshua317/p/4761948.html 前言: 最近工作中遇到了使用微信二次分享的时候,标题被截短,描述也变成了链接,图片也没有,运营人员半夜还在嚷嚷,无奈只好硬着头皮去百度,去google,但是悲催的是没有详细的解决方法,最终只能自己去研究,还好最终搞出来了,决定分享一下,帮助需要的人.博文,分两篇,第一篇主要是微信的官方文档说明,第二篇主要是代码部分: 一.微信JS-SDK说明文档 1.概述 微信JS-SDK是微信公众平台面向网页开发者

ionic 实现微信朋友圈分享的完整开发流程

最近开始要着手负责开发ionic的项目了,一直很好奇想实现一个微信朋友圈分享的功能,所以我就网上找了找文章来练手实现,果不其然,找到了几篇,但是发现它们的流程都不太详细,清楚,直接,还有不少坑. 今天我自己就来梳理一下整个流程,笔者认为大家都是有ionic基础的: 首页,你得准备这些:    1: 一个android apk包    2: 应用签名(需要android apk包名来生成签名)    3: 通过微信开发平台,填写应用信息,申请一个微信 appid     4: 使用 cordova

IOS系统自带社交分享

很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IOS7后集成的腾讯微博. 在IOS中,实现社交分享可以自己编写各个平台的分享代码,但代码量较多,也可以利用IOS自带的Social.framework,更可以利用第三方的分享框架,如友盟,ShareSDK等.接下来先介绍一个系统自带的分享功能. 打开设备或模拟器的偏好设置,可以看到如下 系统需要先登录

应用程序间跳转 (友盟SSO 授权 与系统自带的分享)

应用程序间跳转的应用场景 使用第三方用户登录,如微信登录,返回用户名和密码 需要用户授权,返回到调用程序,同时返回授权的用户名 应用程序推广,跳转到itunes并显示指定app下载页 第三方支付,跳转到支付APP,如支付宝,微信钱包 显示位置及导航功能时,跳转到第三方地图应用. 打电话.发邮件.发短信.打开网页等,跳转到内置APP程序 应用间的跳转: 1.//url :统一资源占位符 http://baidu.com tel://110 file:///apple/storebock //由 

IT技术学习指导之Linux系统入门的4个阶段(纯干货带图)

IT技术学习指导之Linux系统入门的4个阶段(纯干货带图) 全世界60%的人都在使用Linux.几乎没有人没有受到Linux系统的"恩惠",我们享受的大量服务(包括网页服务.聊天服务等)背后几乎都是由Linux系统支撑的服务器,超过20亿人每天都随身携带基于Linux内核开发的 Android手机出门,Linux也广泛应用在嵌入式系统上.因此学习Linux系统变得尤为重要,对于普通用户而言,平面式的学习Linux系统的基本使用已经足够,但对于开发者或者运维人员而言,深入学习Linux

微信二次分享功能开发笔记

最近的一个项目在进行二次分享的时候出现了问题,定制的文案描述及图片都不能在分享后出现,如图所示: 经过十八般折腾,终于变成我想要的样式了,如图:    下面讲讲具体如何实现的. 首先,明白我们的需求是使由app分享到微信后的页面可以使用微信的二次分享功能做定制化的分享(如图所示) 然后开始着手做相关功能开发. 根据微信开发文档,知晓我们需要调用微信的api,获取对应的分享功能(朋友.朋友圈.qq)等,还需要一个对应的公众号或者服务号.理清思路后,接下来介绍关于各部分的具体处理,见下: 本地代码处