idct/simple-wykop

Wykop.pl API v2 基本客户端

dev-master 2020-04-04 06:46 UTC

This package is auto-updated.

Last update: 2024-09-04 17:05:29 UTC


README

Wykop.pl API v2 的简单 PHP 客户端

安装

在项目中安装库的最佳方式是使用 Composer

composer require idct/php-simple-wykop

当然,您仍然可以手动将所有必需的文件包含到项目中,使用使用语句,但 Composer 和自动加载被强烈推荐。

待办事项和贡献

主要需要大量工作和贡献的领域是专用方法的覆盖范围。除此之外,任何关于测试(大多缺失)或代码风格的更新都总是受欢迎!请创建 Pull Requests 或提交带有您输入的问题。

使用

首先,创建一个实例

use IDCT\Wykop\SimpleWykop();
$wykop = new SimpleWykop($appKey, $appSecret);

从哪里获取 $appKey$appSecret

您需要在 Wykop.pl 的“程序员”部分注册一个 API v2 应用程序;通常在这里:https://www.wykop.pl/dla-programistow/

如果您正在为自身创建应用程序,您已经可以传递 $connectionKey

use IDCT\Wykop\SimpleWykop();
$wykop = new SimpleWykop($appKey, $appSecret, $connectionKey);

如何获取 $connectionKey

有两种方法可以实现

为自己制作的应用程序

只需单击 Wykop 面板中应用程序列表上的连接按钮(“连接应用程序”):https://www.wykop.pl/dla-programistow/twoje-aplikacje/

为使用浏览器进行身份验证的多用户

如果您想处理多个用户,则需要首先让他们使用 Wykop 的身份验证方法连接到您的应用程序

  1. 创建应用程序实例并生成连接 URL
$wykop = new SimpleWykop($appKey, $appSecret);
$returnUrl = 'https://mydomain.pl/myscript.php';
$connectUrl = $wykop->getConnectUrl($returnUrl);

$returnUrl 应该是您服务器上的脚本,该脚本将处理响应数据,包括用户的连接密钥。

  1. 通过某种方式将用户重定向到连接 URL,例如通过调用您的前端或通过调用
header('Location' . $connectUrl);
exit();
  1. 在处理您的返回 URL 的脚本中,通过调用
$wykopConnect = $wykop->parseWykopConnectData();

默认情况下,它期望返回的信息在 connectData GET 参数中,但如果您以某种方式处理过它,您只需将返回内容的 base64 编码数组作为第一个参数传递即可。

如果失败(缺少参数),它将抛出异常。

  1. 现在,在您的 SimpleWykop 实例中设置 connectionKey
$wykopConnect->setConnectionKey($connectionKey);

完成。

发起请求

强烈建议使用专用方法,但如果未实现(最有可能没有实现)则可以使用通用方法

$response = $this->execute($function, $arguments, $filesInfo, $page);

参数

  • $function 应替换为 Wykop API 中可用的方法的名称。例如 "notifications/index"。
  • $arguments 应该是函数所需的参数数组。
  • filesData 是与输入参数一起发布的文件数据的数组。
  • $page 如果函数可以返回多个页面,则在这里输入页面号。

如果成功,则响应将是一个 GenericResponse 类的实例,该实例将整个响应作为数组持有,可以通过 getData 方法访问。如果有下一页或前一页,则 getPaginationNext 将持有值而不是 null(在库中使用时忽略 URL,只需处理有值的事实即可)。

专用方法

登录

$wykopConnect->login($username);

将尝试使用用户名(该用户必须已通过 $connectionKey 链接到您的应用程序)登录。

成功时将返回一个包含用户基本信息的Profile实体实例。SimpleWykop实例的loginKeylogin属性也将被设置。

另一种选择是手动登录:

$wykopConnect->loginManually($username, $loginKey);

此类登录尝试假设您已经知道登录密钥(例如,从之前的登录中获取,使用$wykop->getLoginKey())。警告:没有执行验证,它假设您知道自己在做什么。

警告:登录密钥是临时的,但您应该始终尝试重复使用它,因为Wykop的API每小时对操作的限制非常低,登录尝试也被视为操作。

专用方法将在发生InvalidWykopCredentials异常时始终尝试重新登录,因此请确保在执行所有操作后检查getLoginKey(),如果您将其存储在某处。

注销

$wykopConnect->logout();

清除loginloginKey属性,但不会执行任何远程操作,因为简单地使用Wykop的API不提供此类方法。

retrieveNotifications

正如其名所示,它检索用户的通知,这包括私信信息。不包括标签通知,为此有一个特殊的方法。

它创建了一个NotificationsIterator,该类在GenericResponse上创建,并在每次迭代中创建新的Notification实例,因此请了解如果反复迭代结果集可能会产生的潜在内存影响。

示例用法

$notifications = $wykop->retrieveNotifications();

foreach ($notifications as $notification) {
    var_dump( $notification->getUrl() );
}

由于Notifications扩展了GenericResponse,您仍然可以使用getData访问原始数据数组或有关下一页/上一页的信息。

retrieveHashtagNotifications

retrieveNotifications方法非常相似,它只是检索用户标签的通知。

它创建了一个NotificationsIterator,该类在GenericResponse上创建,并在每次迭代中创建新的Notification实例,因此请了解如果反复迭代结果集可能会产生的潜在内存影响。

示例用法

$notifications = $wykop->retrieveHashtagNotifications();

foreach ($notifications as $notification) {
    var_dump( $notification->getUrl() );
}

由于Notifications扩展了GenericResponse,您仍然可以使用getData访问原始数据数组或有关下一页/上一页的信息。