johnrivs/wunderlist

此包已被废弃且不再维护。未建议替代包。

最新 Wunderlist API 版本的 SDK

0.13.2 2017-03-16 20:12 UTC

This package is not auto-updated.

Last update: 2020-05-09 08:40:07 UTC


README

Latest Stable Version Total Downloads License Endpoint coverage

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,携带codestate。它看起来像这样: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