奇妙清单( Wunderlist )是一个好用 To-do 应用,可以很方便地进行各种待办事项的创建和管理。它最大优势则在于跨平台性,支持所有主流平台:iPhone, iPad, Android, Windows Phone, Windows 8, Mac, Chromebook, Kindle Fire,甚至,你只需要能上网,就能使用奇妙清单的网页版。
但至今为止,奇妙清单还没有提供一个批量导入功能。如果手头有大量的任务数据需要导入,手动一个个去添加就太辛苦了。好在奇妙清单官方提供了很丰富的 API 接口。我们可以使用这些接口自己实现个批量导入功能。
(详细的接口文档地址: https://developer.wunderlist.com/documentation
一、准备工作
1,在官网上注册一下App
要使用 Wunderlist 的接口,首先我们需要到其开发者网站上新建一个App应用。
2,创建后我们可以得到这个应用的注册信息
3,获取授权
(1)我们可以在浏览器中出入如下格式的 url ,重定向到 Wunderlist 网站上获取 Wunderlist 帐号对这个应用的授权。
https://www.wunderlist.com/oauth/authorize?client_id=ID&redirect_uri=URL&state=RANDOM
其中 client_id 就是前面生成的 CLIENT ID redirect_uri 是授权后要重定向的地址。 state 随便填。所以这里我们使用如下 url 地址:
https://www.wunderlist.com/oauth/authorize?client_id=1964b41c764e03988257&redirect_uri=http://www.hangge.com&state=RANDOM
(2)在跳转过来的登录页中输入 Wunderlist 的帐号密码后,点击登录。
(3)登录后询问是否需要授权,点击授权。
(4)授权后浏览器跳转,我们可以得到 code
4,将code转换成access token
我们将 client_idclient_secretcodePOST 的方式发送到:https://www.wunderlist.com/oauth/access_token
即可得到对应的 access token
这里我直接使用 Chrome 插件 Postman 来发送请求(点击查看Postman的使用方法),就不再专门写个页面来发送了。
二、调用接口实现导入
我们有了 access tooken,加上前面的 client id。将它们放在 HTTP 请求头(HTTP request headers)就可以调用 Wunderlist 的各个接口了。
1,查询清单id
想要将任务导入到清单中,首先要得到这个清单的 id。这里先通过 a.wunderlist.com/api/v1/lists 获取所有清单信息。(注意:我在请求头中添加了 X-Client-IDX-Access-Token 这两个参数属性。)
2,将数据导入到清单中
下面通过 php 代码将任务列表批量添加到“想看的电影”这个清单中(作为演示,这里要插入的任务列表我就直接使用在程序中定义的数组,其中有6条数据。实际使用中我们可以改成从外部文件读取。)
这里调用的接口是:a.wunderlist.com/api/v1/tasks。(我们遍历任务,并调用这个接口一个个添加。)
//数值 0 表示没有执行时间的限制 ini_set('max_execution_time', '0'); **封装cURL的调用接口,post的请求方式。 function doCurlPostRequest($url, $requestString = "", $header = [], $timeout = 5){ if($url == '' || $timeout <=0){ return false; $curl = curl_init((string)$url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书 curl_setopt($curl, CURLOPT_POSTFIELDS, $requestString); curl_setopt($curl, CURLOPT_POST,true); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_TIMEOUT,(int)$timeout); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //添加自定义的http header return curl_exec($curl); $url = "https://a.wunderlist.com/api/v1/tasks"; $header[] = "X-Client-ID:1964b41c764e03988257"; $header[] = "X-Access-Token:4effefebb064efa028a2f1f5cd79c7d74965436743858048f3c0cfc30508"; $header[] = "Content-Type: application/json"; //数据是raw形式的json格式数据 $arr = [ ["肖申克的救赎","1994-09-10"], ["这个杀手不太冷","1994-09-14"], ["霸王别姬","1993-01-01"], ["阿甘正传","1994-06-23"], ["盗梦空间","2010-09-01"], ["千与千寻","2001-07-20"] foreach($arr as &$value) { $data = '{ "list_id": 267235055, "title": "'.$value[0].'", "due_date": "'.$value[1].'" //执行添加操作 $resule = doCurlPostRequest($url, $data, $header); //输出结果 echo $value[0]." -- "; $obj = json_decode($resule); if($obj == null || property_exists($obj, 'error')){ echo "失败<br>"; }else{ echo "成功<br>"; 执行完毕后,页面上显示出执行结果:
打开奇妙清单,发现任务数据也已经添加成功了。
  • JS - Lodash工具库的使用详解7(Array数组函数4:数组排序、打乱)
  • RequireJS - 使用 r.js 实现模块、项目的压缩合并(压缩js、css文件)
  • Vue.js - 解决 npm install 时报 chromedriver 丢失错误
  • 纯CSS Tooltips
  • 边缘计算框架EdgeX Foundry使用详解6(将数据通过POST方式推送到服务器上)
  • Linux下MongoDB数据库的安装、使用教程(以CentOS系统为例)
  • jQuery - 动态添加、删除form表单项(附:新增项数据无法提交问题解决)
  • Vue.js - 实现前端excel表格预览功能(Luckysheet+Luckyexcel)
  • TIOBE - 2020年11月编程语言排行
  • Kafka Connect的部署和使用详解1(安装配置、基本用法)
  •