idct / simple-wykop
Wykop.pl API v2 基本客户端
Requires
- php: ^7.1
- ext-curl: *
- myclabs/php-enum: ^1.7.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- php-coveralls/php-coveralls: ^2.1
- php-mock/php-mock-phpunit: ^2.5
- phpunit/phpunit: ^7.5
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 的身份验证方法连接到您的应用程序
- 创建应用程序实例并生成连接 URL
$wykop = new SimpleWykop($appKey, $appSecret); $returnUrl = 'https://mydomain.pl/myscript.php'; $connectUrl = $wykop->getConnectUrl($returnUrl);
$returnUrl
应该是您服务器上的脚本,该脚本将处理响应数据,包括用户的连接密钥。
- 通过某种方式将用户重定向到连接 URL,例如通过调用您的前端或通过调用
header('Location' . $connectUrl); exit();
- 在处理您的返回 URL 的脚本中,通过调用
$wykopConnect = $wykop->parseWykopConnectData();
默认情况下,它期望返回的信息在 connectData
GET 参数中,但如果您以某种方式处理过它,您只需将返回内容的 base64 编码数组作为第一个参数传递即可。
如果失败(缺少参数),它将抛出异常。
- 现在,在您的
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
实例的loginKey
和login
属性也将被设置。
另一种选择是手动登录:
$wykopConnect->loginManually($username, $loginKey);
此类登录尝试假设您已经知道登录密钥(例如,从之前的登录中获取,使用$wykop->getLoginKey()
)。警告:没有执行验证,它假设您知道自己在做什么。
警告:登录密钥是临时的,但您应该始终尝试重复使用它,因为Wykop的API每小时对操作的限制非常低,登录尝试也被视为操作。
专用方法将在发生InvalidWykopCredentials
异常时始终尝试重新登录,因此请确保在执行所有操作后检查getLoginKey()
,如果您将其存储在某处。
注销
$wykopConnect->logout();
清除login
和loginKey
属性,但不会执行任何远程操作,因为简单地使用Wykop的API不提供此类方法。
retrieveNotifications
正如其名所示,它检索用户的通知,这包括私信信息。不包括标签通知,为此有一个特殊的方法。
它创建了一个Notifications
类Iterator
,该类在GenericResponse
上创建,并在每次迭代中创建新的Notification
实例,因此请了解如果反复迭代结果集可能会产生的潜在内存影响。
示例用法
$notifications = $wykop->retrieveNotifications(); foreach ($notifications as $notification) { var_dump( $notification->getUrl() ); }
由于Notifications
扩展了GenericResponse
,您仍然可以使用getData
访问原始数据数组或有关下一页/上一页的信息。
retrieveHashtagNotifications
与retrieveNotifications
方法非常相似,它只是检索用户标签的通知。
它创建了一个Notifications
类Iterator
,该类在GenericResponse
上创建,并在每次迭代中创建新的Notification
实例,因此请了解如果反复迭代结果集可能会产生的潜在内存影响。
示例用法
$notifications = $wykop->retrieveHashtagNotifications(); foreach ($notifications as $notification) { var_dump( $notification->getUrl() ); }
由于Notifications
扩展了GenericResponse
,您仍然可以使用getData
访问原始数据数组或有关下一页/上一页的信息。