微信小程序获取微信公众号文章2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YQXLLWY/article/details/79109537

微信小程序获取微信公众号文章2

前面介绍了一篇微信小程序打开微信公众号中的文章实战教程,主要介绍了实现的具体原理,但是实际去做的时候,发现了更多的坑,所以这里再补充一下。

原先的思路是不完整的

原先我们调用了微信的接口,获取了指向这篇文章的地址,以为使用web-view就可以让微信小程序指向那个地址,虽然微信设置了业务域名这个限制,但是将其设置为我们要访问的地址即可,这是最开始的想法,但是这个想法是不完整的,原因很简单,微信业务域名的限制如下:

  • 只能支持https
  • 要将对应的验证文件放在对应域名服务器下的根目录中,即使用那个域名可以直接请求到

而微信公众号的文章域名第一不是https的,第二,那个验证文件也不可能放在微信的服务器下,除非你有能力黑进去。所以按照我们原先的想法,直接使用web-view访问的想法泡汤了。

但是也不是没有不能实现的办法,就是实现起来比较麻烦。

既然微信能访问的域名是限制死的,那么就让其访问我们自己的服务器,并在我们自己的服务器中获取文章后渲染出来。间接的访问那篇文章。

大体上的思路其实就是拿我们自己的服务器做了一个中转站,所以接下来的问题就是:

  • 服务器如何获取文章
  • 获取文章后如何显示

注意其中有一个坑,那就是调用微信公众号接口时其实是有返回文章内容的,可以看下面的例子:

其中的content就是文章的内容,但是注意,这里的内容是不完整的!!!不完整的!!!不完整的!!!当你直接选择渲染着部分内容时,会出现样式的缺失问题,即部分内容显示错误的问题,可能是缺了一些文件的原因。注意不要跳进这个坑!

实战代码

我用的是thinkphp 3.2.3框架,配合上curl进行文章获取。前端的代码基本不用怎么变的,就是将地址指向哦我们制定的域名即可。

// curl获取文件内容的代码
function curl_get_contents($durl) {
      if (function_exists('curl_init')) {
          $ch = curl_init();
          curl_setopt($ch, CURLOPT_URL, $durl);
          curl_setopt($ch, CURLOPT_TIMEOUT, 5);
          curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
          curl_setopt($ch, CURLOPT_REFERER, _REFERER_);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          $result = curl_exec($ch);
          curl_close($ch);
      } else {
          $result = @file_get_contents($durl);
      }
      return $result;
  }

其中的$durl就是微信公众号的文章地址了,获取内容后最直接的显示就是

// 控制器中
$url="";
// 当然,如果你想要更快的加载,而不是每一个人来请求一次你就再获取一次的话,建议你将内容缓存起来
$articleContent=curl_get_content($url);
$this->assign('content',$articleContent);
$this->display();

接着在模版中

<?php
    echo $content;
?>

好了,这样就可以了。其实思路上实现是简单的,就是微信对微信小程序的限制掐的很死,所以我们需要绕一点弯路而已。

猜你喜欢

转载自blog.csdn.net/YQXLLWY/article/details/79109537