johnrivs / wunderlist
最新 Wunderlist API 版本的 SDK
Requires
- guzzlehttp/guzzle: ~6.1
Requires (Dev)
- apigen/apigen: ^4.1
README
Wunderlist 将于 5 月 6 日正式关闭。请在 5 月 6 日之前将您的列表和任务移至 Microsoft To Do。
http://johnrivs.github.io/wunderlist
如何使用?
注册您的应用
首先,您需要注册您的应用。要这样做,请访问 这里,登录并点击蓝色的“创建应用”按钮。Wunderlist 将询问应用名称、描述、代表应用的图标、应用的 URL 以及授权的回调 URL。
如果您的应用尚未托管在互联网上,将两个 URL 字段都设置为 https://
。您只需要设置一个“真实的”授权回调 URL,当您需要设置授权时(关于这一点稍后会更详细地说明)。
安装包
此包可以通过 Composer 安装
composer require johnrivs/wunderlist
如果您使用的是框架,则您 vendor
目录中的所有内容很可能已经自动加载。否则,请自行拉取文件。
<?php require_once __DIR__.'/path/to/vendor/autoload.php';
构建客户端
返回到 应用页面 并复制您的应用的“客户端 ID”、“客户端密钥”和访问令牌,您可以通过点击“创建访问令牌”生成访问令牌。
<?php use JohnRivs\Wunderlist\Wunderlist; $clientId = 'THE_CLIENT_ID'; $clientSecret = 'THE_CLIENT_SECRET'; $accessToken = 'THE_ACCESS_TOKEN'; $w = new Wunderlist($clientId, $clientSecret, $accessToken); $w->getCurrentUser();
您可以可选地传递一个布尔值作为第 4 个参数,以决定包在缺少必需参数时是否抛出异常。默认情况下,它会抛出异常。
授权
对于某些方法(主要是那些需要写入、更新或删除数据的方法),您需要用户访问令牌。到目前为止,您只有应用访问令牌,您可以使用它为自己操作。
首先,将用户重定向到Wunderlist,他们需要授予您的应用程序访问权限。Wunderlist需要两个东西:传递给它的随机字符串和回调URL。请确保您暂时保存该随机字符串(在文件或会话中)
$state = md5(time()); // Store the $state to retrieve it later // Redirect the user to: $w->authUrl($state, 'http://your-domain.com/auth/callback')
注意:您提供的URL必须与您设置为应用程序认证回调URL的URL相同。
如果您在本地工作,我建议使用ngrok
- 启动HTTP服务器。在PHP终端中
php -S localhost:8000
- 创建隧道:
ngrok http localhost:8000
。它将告诉您您的网站公开可用的位置,例如http://96d15c39.ngrok.io
- 转到应用程序页面,并将认证回调URL设置为
http://96d15c39.ngrok.io/auth/callback
或您得到的任何内容。 - 在您的代码中使用相同的URL:
$w->authUrl($state, 'http://96d15c39.ngrok.io/auth/callback')
ngrok每次创建隧道时都会给您一个不同的URL,因此您需要更新应用程序的认证回调URL和提供给authUrl()
的URL。
一旦用户授予您的应用程序访问权限,他们将被重定向到回调URL,携带code
和state
。它看起来像这样:http://96d15c39.ngrok.io/auth/callback?code=random_string&state=the_state_from_the_previous_step
。现在检索之前的$state
并将其与$_GET['state']
进行比较。如果它们相同
$accessToken = $w->getAuthToken($_GET['code']);
这就是用户的访问令牌。
常见问题解答(FAQ)
这个包到底是什么?
这个包是Wunderlist API中每个端点的包装器。要了解每个方法需要提供哪些属性、它返回的数据或设置了什么状态码,请参阅官方Wunderlist API文档。
这个包有多灵活?
由于此包不执行验证或清理,您可以为几乎所有方法提供任何属性。但是,它将检查属性是否包含端点所需的字段。如果您提供了未识别的属性字段,则将忽略它们。再次提醒,要了解Wunderlist API端点属性中应包含哪些字段,请查看官方Wunderlist API文档。
我应从Wunderlist API中期待什么?
大多数情况下,方法将返回一个包含您刚刚执行的操作结果的数组。例如,如果您createTask()
,它将返回刚刚创建的任务。某些方法(如deleteTask()
)将返回一个状态码。无论方法返回了什么,您都可以始终使用getStatusCode()
。
它看起来像什么?
几乎每个方法都映射到一个Wunderlist API端点
// Get all tasks for a given list $wunderlist->getTasks(['list_id' => 9876]); // Get all lists $wunderlist->getLists();
我该如何提供数据?
对于大多数方法,您需要提供属性数组,但对于某些方法,您需要提供一些值。请查阅API文档以了解每个方法期望什么。
为什么有些方法比其他方法耗时更长?
由于服务本身的特性,Wunderlist需要通过提供实体的修订版来保持一切同步。为了实现这一点,负责更新实体(如任务、列表等)的方法将首先获取实体,然后执行请求来应用更改。
为什么在身份验证期间会显示禁止
信息?
请确保您提供给authUrl()
的认证回调URL与您为您的应用设置的URL相匹配。
如果出现问题怎么办?
嗯..在撰写本文时,Wunderlist API在错误消息方面并不是很有帮助,所以请确保您坚持文档,使用getStatusCode()
,并在文档评论部分提出任何问题。
进度
- 提醒
获取所有提醒- 创建一个提醒
- 更新一个提醒
- 删除一个提醒
- 一些其他端点(尚未开始)
- Laravel集成
- Silex集成
完成
- 授权
- 头像
- 文件
- 文件夹
- 列表
- 笔记
- 子任务
- 任务
- 评论
- 用户(除了限制用户可以通过列表访问的用户列表)
- Webhook