让微信分享未备案域名网址,带简介和图片

2016年开始,如果想分享链接给好友或者朋友圈,如果不是用官方的API,就不显示图片和简介,这让分享的体验下降了一大截。而如果想使用官方API,不但需要一个认证的微信号,还有后台绑定备案的域名,这里有两个蛋疼的地方:一个是域名需要备案,另一个是只能绑定三个。

2018.1.1开始,域名备案需要实名认证,所有海外域名供应商都没有这个功能,也就是说你必须将域名转回国运营商才能进行备案。海外域名基本上就无法备案了。今天想了个解决方案,在不改变先有域名和系统的情况下,让微信分享出现简介和图片。

首先你需要:

  1. 一个认证的微信号,用于分享API
  2. 一个备案的域名,随便买个备案即可
  3. 备案域名的网站下使用API中跑分享程序

基本原理其实非常简单,就是在备案域名下用curl获取网站,然后分享出去。用户在查看的时候会看到在备案的域名下看到原本的网站,但是进行操作的时候都会回到原先的域名中,而在微信分享的时候,微信API调用的域名是备案的域名。代码直接贴出来,写了些备注,不解释了。由于网站是GBK,所以加了GBK的转换,其实可以不需要。

<?php
	// wechat share api
	require_once ("wx/jssdk.php");
	$jssdk = new JSSDK("yourkey", "yoursecret");
	$signPackage = $jssdk->GetSignPackage();

	//get url and set gbk(optional)
	header('Content-type: text/html; charset=GBK');
	$url=$_GET['url'];
	
	//curl page
	$ch = curl_init();
	$timeout = 10;
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$data = curl_exec($ch);
	curl_close($ch);


	// get title, desc, keyword
	$doc = new DOMDocument();
	@$doc->loadHTML($data);
	$nodes = $doc->getElementsByTagName('title');
	$title = $nodes->item(0)->nodeValue;
	$metas = $doc->getElementsByTagName('meta');
	for ($i = 0; $i < $metas->length; $i++)
	{
		$meta = $metas->item($i);
		if($meta->getAttribute('name') == 'description')
			$description = $meta->getAttribute('content');
		if($meta->getAttribute('name') == 'keywords')
			$keywords = $meta->getAttribute('content');
	}

	print_r($data);
?>

<div id="curl-title"><?php echo mb_convert_encoding($title, 'GBK', 'utf-8'); ?></div>
<div id="curl-desc"><?php echo mb_convert_encoding($description, 'GBK', 'utf-8'); ?></div>
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>
	var title = document.getElementById("curl-title").innerHTML;
	var desc = document.getElementById("curl-desc").innerHTML;
	var imgurl = "https://blog.jing.do/wp-content/uploads/2017/04/icon.jpg";
	wx.config({
		debug: false,
		appId: '<?php echo $signPackage["appId"];?>',
		timestamp: '<?php echo $signPackage["timestamp"];?>',
		nonceStr: '<?php echo $signPackage["nonceStr"];?>',
		signature: '<?php echo $signPackage["signature"];?>',
		jsApiList: [
			'checkJsApi',
			'onMenuShareTimeline',
			'onMenuShareAppMessage',
			'onMenuShareQQ',
			'onMenuShareWeibo'
		]
	});
	window.share_config = {
		 "share": {
			"imgUrl": imgurl,
			"desc" : desc,
			"title" : title,
			"link": window.location.href,
			 success: function (res) {
			 }
		}
	};  
	wx.ready(function () {
		wx.onMenuShareAppMessage(share_config.share);
		wx.onMenuShareTimeline(share_config.share);
	});
</script>
		

如果不太会用微信JDK,回头我再写个简单的教程。

另外分享的原网站需要对每个二维码进行重新生成,比如你备案的域名是sbicp.com,那么你原网站分享的二维码需要是:http://sbicp.com/share.php?url=oldurl.com/path/

至于怎么生成二维码,网上挺多的,我用的这个:https://www.jianshu.com/p/dfefe14d9f2f

亲测可行,有问题留言

看完了?留个评分呗?
[0人评了分,平均: 0/5]

本站原创文章皆遵循“署名-非商业性使用-相同方式共享 3.0 (CC BY-NC-SA 3.0)”。转载请保留以下标注:

原文来源:《让微信分享未备案域名网址,带简介和图片》

发表评论

邮箱地址不会被公开。

评论列表(10)

  1. 不太会用微信JDK,有空的时候可不可以写个简单的教程呀?

  2. 我有一个国内备案的域名,但是分享微信链接的时候只能带图片和标题。简介是URL链接,有没有办法更改简介为文章的头部内容呢?这样用户体验就好很多。

    1. 参考上面代码里面的:

      window.share_config = {
      "share": {
      "imgUrl": imgurl,
      "desc" : desc,
      "title" : title,
      "link": window.location.href,
      success: function (res) {
      }
      }
      };

返回顶部