heise/shariff

Shariff的PHP后端。Shariff允许网站用户在不牺牲隐私的情况下分享他们喜欢的网页内容。

v10.0.0 2023-10-25 13:18 UTC

README

Shariff用于确定一个页面在社交媒体上的分享频率,但不会从显示页面向社交媒体网站生成请求。

Shariff Logo © 2014 Heise Zeitschriften Verlag

本文档描述了Shariff的PHP后端。

支持的服务

  • Buffer
  • Facebook
  • Pinterest
  • Reddit
  • StumbleUpon
  • Xing
  • Vk

需求

要在您的服务器上运行Shariff PHP后端,您需要以下PHP版本之一

  • 7.4
  • 8.0
  • 8.1
  • 8.2

不支持旧版本和HHVM。

在自己的服务器上安装Shariff后端

要在特定的URL下运行Shariff,将发布的zip文件解压缩到您的Web服务器文档根目录下的一个目录中。

查看index.php文件中的示例应用程序,并根据需要调整配置。

以下配置选项可用

缓存设置

默认情况下,Shariff使用文件系统缓存。通过指定Laminas\Cache\Storage\Adapter的不同适配器,您可以告诉Shariff使用另一个缓存。您还可以指定该缓存适配器的选项。

这些选项仅适用于默认缓存类(LaminasCache)。如果您实现自定义缓存,您可以指定自己的选项。

客户端选项

后端使用Guzzle作为HTTP客户端。Guzzle有很多可设置的选项,例如超时和连接超时。有关详细列表,请参阅http://docs.guzzlephp.org/en/latest/request-options.html。为了设置这些选项,请以“client”键将它们作为json传递。

服务设置

要将配置选项传递给服务,您可以将其添加到json中,在服务的名称下。目前只有Facebook服务有用于facebook应用程序ID和客户端密钥的选项,以便使用图形API ID方法获取当前的分享次数。

Facebook服务选项

要使用图形API ID方法获取分享次数,您需要在facebook.com上设置一个应用程序,并将应用程序ID和客户端密钥传递给选项。似乎ID方法返回最新的分享次数,但只能与已注册的应用程序一起使用。

完整的配置示例
use Heise\Shariff\LaminasCache;
/**
 * Sample configuration
 *
 * @var array
 */
private static $configuration = [
    'cacheClass' => 'Heise\\Shariff\\LaminasCache',
    'cache' => [
        'ttl' => 60,
        'cacheDir' => '/tmp/shariff/cache',
        'adapter' => 'Filesystem',
        'adapterOptions' => [
          // ...
        ]
    ],
    'client' => [
      'timeout' => 4.2,
      'headers' => [
        'User-Agent' => 'shariff/1.0',
      ]
      // ... (see "Client options")
    ],
    'domains' => [
        'www.heise.de',
        'www.ct.de'
    ],
    'services' => [
        'Facebook',
        'Reddit',
        'StumbleUpon',
        'Pinterest',
        'Xing',
        'Buffer',
        'Vk'
    ],
    'Facebook' => [
      'app_id' => '1234567890',
      'secret' => 'terces'
    ]
];

测试您的安装

如果后端在http://example.com/my-shariff-backend/下运行,调用URLhttp://example.com/my-shariff-backend/?url=http%3A%2F%2Fwww.example.com应该返回一个包含数字的JSON结构,例如。

{"facebook":1452,"reddit":7,"stumbleupon":4325,"pinterest":3,"buffer":29,"vk":326}

Shariff面向对象接口

如果您需要更多控制,可以在自己的PHP代码中调用Shariff。以下代码片段应该能让您开始。 $options与上面描述的相同。

use Heise\Shariff\Backend;

$options = [
	"domains"  => ["www.heise.de", "www.ct.de"],
	"cache"    => ["ttl" => 1],
	"services" => ["Facebook", "Reddit", "StumbleUpon", "Pinterest", "Buffer", "Vk"]
];
$shariff = new Backend($options);
$counts = $shariff->get("https://www.heise.de/");
echo $counts["facebook"];